【发布时间】:2014-02-18 19:11:53
【问题描述】:
加载腌制字典时 -->
使用 pickle 我收到此错误:
ValueError: itemsize cannot be zero
使用 cPickle 我收到此错误:
ValueError: ('itemsize cannot be zero', <built-in function scalar>,(dtype('<U'), ''))
字典看起来像这样:
{(u'foo', u'bar'): {'which': [1,2,3], 1:[[u'a', u'b', u'c'], [u'aa', u'bb', u'']]}}
键 1 的值是使用 .tolist() 转换为列表的 numpy 数组。
字符串是 unicode(我不小心将一些 ascii 字符串编码为 unicode。我不知道这是否与这些有关)
键和值都可以包含 u'' 作为值,但绝不会仅包含 u'' 项
我正在使用 python 2.7.5 和 numpy 1.7.1
我不确定为什么 cPickle 错误引用了 dtype。这是 cPickle 模块中的东西还是指的是我曾经转换为列表的 numpy 数组?
【问题讨论】:
-
这个字典在 2.7.2 中对我来说没问题。
-
你是对的。我的示例 dict 不会重新创建错误。它只是为了显示字典的基本宏观结构。我将编辑我的问题以显示一些引发我关注的错误的示例代码。
-
错误。我不知道如何重新创建错误。生成字典的代码超过 500 行,运行大约需要 1.5 小时。我的假设是它在某种程度上与 numpy 和/或我的编码尝试有关。
-
你使用
rb和wb作为文件吗? -
是的。我用'wb'来写和'rb'来读。
标签: python arrays numpy unicode