无法加载包含腌制数据的文件-Python .npy I / O

问题描述 投票:0回答:1

[我正在尝试使用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 numpy io
1个回答
0
投票

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)。这将不会使用任何酸洗来保存您的数据并解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.