了解numpy.savez标量的行为

时间:2018-06-20 17:11:46

标签: python numpy

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_做什么?

0 个答案:

没有答案