序列化`numpy.dtype`对象:人类可读



一些背景。我正在为HDF5数据库构建一个应用程序/模式,而API的一部分可以在您首次构造HDF5文件时指定数据集的DTYPE(以及一部分形状),但不一定必须写入这些数据集时您在关闭文件之前指定并删除文件对象的包装器。因此,我想将这些数据保存在HDF5文件中,因此应用程序程序员不必每次打开文件写作时都会传递这些规格。我还希望能够为这些数据集(通过h5py库)支持任意numpy.dtype

除了腌制外,还有一种标准/好方法来序列化纯文本吗?

我不想使用腌制,因为它不是真正可读性的,并且想像JSON样式格式更像。

例如。对于这样的数据类型:

In [1]: dt
Out[1]: dtype([('one', '<i8'), ('two', '<f8')])

我的工作解决方案只是使用json字符串:

In [1]: dt = numpy.dtype([('one', np.int), ('two', np.float)])
In [2]: dt.descr
Out[2]: [('one', '<i8'), ('two', '<f8')]
In [3]: dt_str = json.dumps(dt.descr)
In [4]: dt_str
Out[4]: '[["one", "<i8"], ["two", "<f8"]]'

可以很容易地读回并转换为 numpy.dtype

In [5]: np.dtype([tuple(i) for i in json.loads(dt_str)])
Out[5]: dtype([('one', '<i8'), ('two', '<f8')])

最新更新