使用不同平台时出现Numpy.load()错误

时间:2019-01-25 17:13:33

标签: python numpy save load platform

我正在使用np.save/np.load将数据保存到文件中并从另一个脚本读取。尽管代码在Windows和Linux下均能正常工作,但是当我尝试通过Windows设置加载在Linux中创建的.npy文件时,仍然存在问题。在这两种情况下,我都使用python 3.6,并且软件包是最新的(numpy版本相同)。

我注意到这仅在具有dtype = object的数组中发生,而在其他类型的数组中不发生。我得到的错误是“ TypeError:_reconstruct:第一个参数必须是ndarray的子​​类型”。

我试图将np.save中的allow_pickle参数更改为False,但是它不起作用(它不允许我保存多个数组)。

有什么想法吗?关于保持数据跨平台的其他方式有何建议?

谢谢

编辑:我用字典和numpy数组进行了一些简单的实验,结果发现问题出在不同的配置中。

例如,如果我在Unix中导出并在Windows上加载(pickle.load),但不使用numpy数组,则pickle.dump()可用于词典。

另一方面,当我在Unix中导出并在Windows上加载时,np.save()/ np.load()适用于非对象numpy数组,但不适用于字典。

对于numpy对象或数组列表(例如,具有不同形状的np.array列表),这两种方法均会失败

当然,假设我使用相同的平台,np.save / np.load可以对所有类型的数据正常工作。

还有其他想法吗?我尝试使用hdf5格式,但仍然出现一些错误。

0 个答案:

没有答案