[我正在尝试使用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,然后将其加载到另一个脚本中?我应该使用其他功能吗?谢谢!
Python使用称为Pickle的本机数据序列化模块。嵌套数据(如列表列表)使用pickle序列化,NumPy警告不要进行酸洗。
警告:加载包含对象数组的文件时,会使用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(x[0], filename)
。这将不会使用任何酸洗来保存您的数据并解决问题。