【发布时间】:2010-11-11 03:06:05
【问题描述】:
PyTables 是否支持存储 Python 对象? 像这样:
dtype = np.dtype([('Name', '|S2'), ('objValue', object)])
data = np.zeros(3, dtype)
file.createArray(box3,'complicated',data)
当然,我在尝试执行此操作时会出错... 如何正确存储对象数组?有可能吗? 谢谢
【问题讨论】:
PyTables 是否支持存储 Python 对象? 像这样:
dtype = np.dtype([('Name', '|S2'), ('objValue', object)])
data = np.zeros(3, dtype)
file.createArray(box3,'complicated',data)
当然,我在尝试执行此操作时会出错... 如何正确存储对象数组?有可能吗? 谢谢
【问题讨论】:
您可以使用 Pytables 保存通用 Python 对象:
>>> dtype = np.dtype([('Name', '|S2'), ('objValue', object)])
>>> data = np.zeros(3, dtype)
>>> file = tables.openFile('/tmp/test.h5', 'w')
>>> myobjects = file.createVLArray(file.root, 'myobjects', tables.ObjectAtom())
>>> myobjects.append(data)
>>> myobjects[0]
array([('', 0), ('', 0), ('', 0)],
dtype=[('Name', '|S2'), ('objValue', '|O8')])
但是,这将在幕后使用 pickle(实际上是 cPickle),因此您将无法从其他语言访问这些对象(pickle 是一种仅由 Python 本身支持的序列化格式)。
【讨论】:
如果您想将复杂数据存储在相关库不支持的位置,请尝试使用 pickle 模块。
【讨论】: