【发布时间】:2018-06-13 18:22:27
【问题描述】:
我试图提出另一点,但不小心使用 numpy np.save() 保存了 dict。令我惊讶的是,这种方法似乎完全没有问题。我用另一个对象尝试了上述方法,它不是np.array,就像list,它似乎工作正常。
例如下面的代码,使用np.save()和np.load()保存和加载一个对象:
list_file = 'random_list.npy'
random_list = [x*2 for x in range(20)]
np.save(list_file, random_list)
# load numpy array
random_list2 = np.load(list_file)
set(random_list) == set(random_list2)
是的
所以,我的问题是:
- 既然在documentation 中只提到了数组,为什么还是会成功?
- 同样,如果要处理其他对象,可以处理哪些对象?
我知道泡菜有一些限制,可能会影响可以处理的对象的性质,但仍然存在很多不清楚的地方。
编辑:
我认为np.save() 只是试图将作为参数传递的对象转换为 numpy 数组,但这在某些情况下没有任何意义,例如dict。
例如,传递给 np.array 的 dict 似乎根本不起作用:
a = {1: 0, 2: 1, 3: 2}
b = np.array(a)
type(b)
numpy.ndarray
b.shape
()
【问题讨论】: