numpy.savez函数可用于一次存储和加载多个numpy数组。由于我想同时存储数组和标量,因此我尝试使用numpy.savez同时保存两者。
文档未指定标量的行为。它仅说明该函数适用于数组。当我再次尝试加载标量时,我得到了一些奇怪的对象。
然后我发现通过将标量转换为一个元素的数组可以很好地工作。我还是想知道,我怎么能理解收到的奇怪物体。
以下最小示例:
import numpy as np
param = 2
# save
np.savez('file', param=param)
# load
npzfile = np.load("file.npz")
param_ = npzfile['param']
# what happens?
print(param_)
print ('', param_)
print type(param_)
print np.shape(param_)
print(param_[0])
产生以下输出:
2
('', array(2))
<type 'numpy.ndarray'>
()
Traceback (most recent call last):
File "Minimal.py", line 17, in <module>
print(param_[0])
IndexError: too many indices for array
所以我基本上得到一个没有任何大小的np.array,当在print中使用它时会返回正确的输出。它也是一个array(2),根本无法使用[]进行访问。
到底发生了什么?我可以用param_做什么?