Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在numpy结构化阵列中存储单元信息的最佳方法?_Python_Numpy - Fatal编程技术网

Python 在numpy结构化阵列中存储单元信息的最佳方法?

Python 在numpy结构化阵列中存储单元信息的最佳方法?,python,numpy,Python,Numpy,在numpy结构化数组中存储列的单位信息的最佳方式是什么 据报道,我在这里试过这个 字段名也可以是2元组字符串,其中第一个字符串是“标题”(可以是任何字符串或unicode字符串)或字段的元数据(可以是任何对象),第二个字符串是“名称”,必须是有效的Python标识符 但我如何访问/读取此元数据 import numpy as np dtype = np.dtype([ ('name', 'S64'), (('s', 'read_time'), 'uint16'), (

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

据报道,我在这里试过这个

字段名也可以是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)

如果我了解您要查找的内容,您需要数据类型的“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'
[12]中的
:my_data.dtype.descr
出[12]:
[('name','S64'),

((‘s’、‘read_time’),’您可能想看看

在文档中,它表示为以下功能之一:

NumPy集成:当您选择使用NumPy ndarray时,它的方法 支持和UFUNC,包括单位的自动转换 例如numpy.arccos(q)将需要无量纲的q和单位 输出量的最大值为弧度


thx,我想我更喜欢fields属性,因为我可以使用列的名称:my_data.dtype.fields['read_latency'][-1]>>>“us”,该解决方案有一个问题:例如,如果添加另一个带有
('s','write_time'),'uint16'的数据类型,
我得到一个
值错误:两个同名的字段对结构化数组不起作用。品脱数量只支持每个数组一个单位,而在结构化数组中,你希望每个字段都有一个单位。它也不适用于像
np.dot
这样的数组操作。我曾尝试跟进,但得到了no响应。这是一个死包吗?这个示例有点面向对象,因为您似乎存储的单位总是不同的。例如,如果您尝试使用秒而不是微秒来表示读取延迟,那么您的示例不起作用……因此,最初的问题很好,但示例没有指出足够的问题