加载腌制字典时 - >
使用pickle我收到此错误:
ValueError: itemsize cannot be zero
使用cPickle我收到此错误:
ValueError: ('itemsize cannot be zero', <built-in function scalar>,(dtype('<U'), ''))
Dict看起来像这样:
{(u'foo', u'bar'): {'which': [1,2,3], 1:[[u'a', u'b', u'c'], [u'aa', u'bb', u'']]}}
key 1的值是使用.tolist()转换为列表的numpy数组。
这些字符串是unicode(我不小心将一些ascii字符串编码为unicode。我不知道这与这些字符串有什么关系)
键和值都可以包含u''作为值,但绝不仅包含u''项
我正在使用python 2.7.5和numpy 1.7.1
我不确定为什么cPickle错误引用了dtype。这是cPickle模块中的内容还是指我转换为列表的曾经numpy数组?
答案 0 :(得分:3)
最近在此pull request修复了一个NumPy错误。要重现它,请尝试:
import cPickle
import numpy as np
cPickle.loads(cPickle.dumps(np.string_('')))
答案 1 :(得分:0)
我用虚拟char值替换了所有u''
字符串,我的问题解决了。
Unable to load a previously dumped pickle file in Python提供了有关此问题的更多信息。在某种程度上,它似乎是一个问题,numpy和空字符串不适合泡菜,