【发布时间】:2013-08-14 10:19:30
【问题描述】:
我有一个如下所示的列表:
a = [['a string', [0, 0, 0], [22, 'bee sting']], ['see string',
[0, 2, 0], [22, 'd string']]]
在保存和检索它时遇到问题。
我可以用pickle保存它:
with open('afile','w') as f:
pickle.dump(a,f)
但是当我尝试加载它时出现以下错误:
pickle.load('afile')
Traceback (most recent call last):
File "<pyshell#116>", line 1, in <module>
pickle.load('afile')
File "C:\Python27\lib\pickle.py", line 1378, in load
return Unpickler(file).load()
File "C:\Python27\lib\pickle.py", line 841, in __init__
self.readline = file.readline
AttributeError: 'str' object has no attribute 'readline'
我曾认为我可以转换为 numpy 数组并使用 save、savez 或 savetxt。但是我收到以下错误:
>>> np.array([a])
Traceback (most recent call last):
File "<pyshell#122>", line 1, in <module>
np.array([a])
ValueError: cannot set an array element with a sequence
【问题讨论】:
-
而不是pickle.load('afile') 做pickle.load(open('afile'))
-
当然!谢谢 - 你为什么不把它作为答案..
-
你不能轻易地将你拥有的东西转换成
numpy.array,因为它的形状不规则。您必须制作一个大的常规数组,然后用NaN或类似的东西填充所有数据……基本上就是pandas为您所做的。但是,对于您的小清单来说,这可能有点矫枉过正。