在numpy结构化数组中存储单元信息的最佳方法?

时间:2013-04-16 16:15:53

标签: python numpy

在numpy结构化数组中存储列的单位信息的最佳方法是什么?

根据http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html

,我在这里尝试了这个
  

字段名称也可以是2元组的字符串,其中第一个字符串是“标题”(可以是任何字符串或unicode字符串)或字段的元数据,可以是任何对象,以及第二个字符串是“name”,它必须是有效的Python标识符。

但是如何访问/读取此元数据?

import numpy as np

dtype = np.dtype([
    ('name', 'S64'),
    (('s', 'read_time'), 'uint16'),
    (('us', 'read_latency'), 'float'),
    (('B', 'read_data'), 'uint64'),
])
my_data = np.zeros(10, dtype=dtype)

2 个答案:

答案 0 :(得分:1)

如果我理解你在寻找什么,你需要dtype的“descr”属性:

In [12]: my_data.dtype.descr
Out[12]: 
[('name', '|S64'),
 (('s', 'read_time'), '<u2'),
 (('us', 'read_latency'), '<f8'),
 (('B', 'read_data'), '<u8')]

In [13]: my_data.dtype.descr[1]
Out[13]: (('s', 'read_time'), '<u2')

In [14]: my_data.dtype.descr[1][0][0]
Out[14]: 's'

将此单元元数据用于单元元数据的方法对我来说很有意义。请注意,dtype还有一个“名称”元组,只有字段名称(没有单位)。

答案 1 :(得分:0)

您可能需要查看Pint

在文档中,它表示其中一项功能:

  

NumPy集成:当你选择使用NumPy ndarray时,它的方法   支持ufuncs,包括自动转换单位。对于   示例numpy.arccos(q)将需要无量纲q和单位   输出数量将是弧度。