pickle ValueError:itemsize不能为零

时间:2014-02-18 19:11:54

标签: python arrays numpy unicode

加载腌制字典时 - >

使用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数组?

2 个答案:

答案 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和空字符串不适合泡菜,