我是 numpy 和 hdf5 的新手,正在尝试遵循 Anthony Scopatz 的“HDF5 适合爱好者”教程。
我将 numpy 数组传递给 hdf5 表,但是当我从 hdf5 读取值时,它似乎采用了不同的编码:这是代码:
dt = np.dtype([('id',int),('name','S10')])
knights = np.array([(42,'Lancelot'),(32,'Bedivere')])
f.createTable('/','knights',dt)
f.root.knights.append(knights)
f.root.knights[0]
输出:
(12852, '\x00\x00\x00Lancelot')
这里发生了什么?为什么我没有得到原始输入,即“42”、“Lancelot”?
最佳答案
好的,我已经弄清楚了。
我在创建 numpy 数组时没有指定 dtype。代码的第二行应该是:
knights = np.array([(42,'Lancelot'),(32,'Bedivere')], dt)
关于Python HDF5/NumPy 以不同方式打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18172944/