我尝试使用np.save()将数据帧和矩阵保存为.npy文件,然后使用np.load()读取它们,但得到以下错误:
File "/Users/sofiafarina/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 457, in load
raise ValueError("Cannot load file containing pickled data "
ValueError: Cannot load file containing pickled data when allow_pickle=False
即使我写了allow_pickle=True,我也会得到一个错误:
File "/Users/sofiafarina/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 463, in load
"Failed to interpret file %s as a pickle" % repr(file))
OSError: Failed to interpret file 'finaldf_p_85_12.npy' as a pickle
那么,我如何从python脚本中保存一个df,然后将其加载到另一个脚本中呢?我应该使用其他函数吗?谢谢!
发布于 2020-05-26 17:32:32
我使用下面的语法加载.npy
文件,它工作了。
np.load("finaldf_p_85_12.npy",allow_pickle=True)
我认为您需要添加allow_pickle=True
参数。
发布于 2021-05-11 11:14:52
TLDR;
经过数百次的搜索和几个小时的调试,我发现问题出在git-lfs上,我的文件没有被git-lfs拉取。
git lfs install
git lfs pull
我认为numpy需要正确地报告这一点
我也有同样的问题。我的.npz文件中的dtype
是uint8
,所以不是一个对象,从技术上讲,allow_pickle不应该是必需的。我的numpy版本是1.20.x
在使用allow_pickle=False
时获得了以下内容
ValueError: Cannot load file containing pickled data when allow_pickle=False
有了allow_pickle=True
,我得到了
OSError: Failed to interpret file 'finaldf_p_85_12.npy' as a pickle
发布于 2020-04-07 08:04:27
Python使用一个名为Pickle的本机数据序列化模块。嵌套数据(如列表列表)使用pickle进行序列化,NumPy对pickle发出警告。
警告:加载包含对象数组的文件使用pickle模块,该模块对错误或恶意构造的数据不安全。考虑传递allow_pickle=False来加载已知不包含对象数组的数据,以便更安全地处理不受信任的源。
您可能要保存一个包含单个dataFrame的数组。这会导致酸洗。示例:
x = array([[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1]])
在这种情况下,尝试仅将numpy数组保存为np.save(filename, x[0])
。这将不会使用任何酸洗来保存您的数据,并解决了问题。
https://stackoverflow.com/questions/60191681
复制相似问题