【发布时间】:2020-01-30 14:36:14
【问题描述】:
我试图在一个程序中保存一个数组并在另一个程序中打开它,我的数组是
[[ 0. 2815. 3286. 4060. 2877. 2236.]
[2798. 0. 471. 1245. 1586. 1931.]
[3165. 367. 0. 1006. 1556. 1902.]
[3724. 1268. 1739. 0. 551. 896.]
[3344. 1573. 1575. 2030. 0. 515.]
[2925. 1923. 1925. 2380. 641. 0.]]
保存它我正在使用:
def saveArray(array):
import numpy as np
np.save('postCodeArray', array)
然后打开它我正在使用
def callFunction():
import numpy as np
array = np.load('postCodeArray.npy')
print(array)
我收到这个错误
" 文件“C:\Users\wf5931\AppData\Local\Continuum\anaconda3\lib\site-packages\numpy\lib\format.py”,第 696 行,在 read_array raise ValueError("无法加载对象数组时"
ValueError:allow_pickle=False 时无法加载对象数组
请帮忙!
- 当我尝试使用类似的 np.zeros((4,4)) 矩阵时,它似乎可以工作。 V 困惑
【问题讨论】:
-
您确定代码中的变量
array是一个数组而不是一个列表吗?如果是数组,检查它的 dtype (array.dtype),如果是object数组,则将其转换为float或int(array.astype('float32')) -
您的数组很可能是 object dtype。
np.zeros是一个浮点数据类型。对象 dtype 数组必须使用pickle来保存对象元素。在较新的numpy版本中,您必须在加载此类数组时显式地allow_pickle。这是为了提高安全性。 -
我在使用 numpy 1.17 时遇到了同样的问题。这不是对错误根本原因的解释,也不是解决方案,而是一种解决方法 - 将 numpy 降级到 1.16.2。例如,“pip install -U numpy=1.16.2”或“conda install numpy=1.16.2”为我解决了这个问题,