我正在尝试分析张量数据,但是我无法使用np.load()读取拾取文件中的数据。我的python代码如下:
import pickle
import numpy as np
import sktensor as skt
import numpy.random as rn
data = np.ones((10, 8, 3), dtype='int32') # 3-mode count tensor of size 10 x 8 x 3
##data = skt.dtensor(data)
with open('data.dat', 'w+') as f: # can be stored as a .dat using pickle
pickle.dump(data, f)
with open('data.dat', 'r+') as f: # can be loaded back in using pickle.load
tmp = pickle.load(f)
assert np.allclose(tmp, data)
但是当我尝试使用np.load()加载data.bat中的数据时,如下所示:
np.load('G:\data.dat')
某些错误显示为“
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
np.load('D:/GDELT_Tensor/data.dat', mmap_mode = 'r')
File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 416, in load
"Failed to interpret file %s as a pickle" % repr(file))
IOError: Failed to interpret file 'D:/data.dat' as a pickle.
任何人都可以帮助我?
答案 0 :(得分:0)
不要使用pickle模块来保存NumPy数组。相反,请使用以下方法之一:the standard
甚至有人在引擎盖下使用泡菜,例如:
np.save('data.dat', data)
tmp = np.load('data.dat')
CSV或HDF5等另一种格式可能更适合大多数应用程序 - 尤其是在您可能希望与非Python系统进行互操作的情况下。