4

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

根据http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html ,我在这里尝试过

字段名称也可以是字符串的 2 元组,其中第一个字符串是“标题”(可以是任何字符串或 unicode 字符串)或字段的元数据,可以是任何对象,第二个字符串是“名称”必须是有效的 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)
4

2 回答 2

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 也有一个“名称”元组,其中只有字段名称(没有单位)。

于 2013-04-16T16:59:55.993 回答
0

你可能想看看品脱

在文档中,它声明为功能之一:

NumPy 集成:当您选择使用 NumPy ndarray 时,支持其方法和 ufunc,包括自动转换单位。例如 numpy.arccos(q) 将需要一个无量纲的 q 并且输出量的单位将是弧度。

于 2013-10-21T12:12:39.963 回答