gpt4 book ai didi

python - 以列表形式检索 numpy 记录数组的字段格式

转载 作者:太空宇宙 更新时间:2023-11-03 19:13:02 24 4
gpt4 key购买 nike

我正在尝试规范 pytable 和 rearray 的格式,以便将 rearray 附加到 pytable。为此,我需要从记录中获取字段信息(即名称和字段格式),我可以使用以下方法轻松获取记录名称列表:

namelist = Myrecarray.dtype.names

但还没有找到对应的属性。 recarray dtypes 属性返回名称和格式的元组列表,但无法迭代此列表来检索格式。这似乎是非标准的,因为我能够迭代其他元组列表来获取特定的元组项目。例如,以下代码显示了对数组和记录数组的迭代,并尝试对记录数组的数据类型的元组列表进行迭代:

import numpy as np

my_list = [(1, 2), (3, 4), (5, 6)]
print([x[0] for x in my_list])
print('-----------------------')

my_array = np.array([(1.0, 2, 5), (3.0, 4, 77)], dtype=[('x', float), ('y', int), ('z', float)])
print([x[2] for x in my_array])
print('-----------------------')

img = np.array([[(0,0,0), (1,0,0)], [(0,1,0), (0,0,1)]], {'names': ('r','g','b'), 'formats': ('f4', 'i2', 'f4')})
nta = np.array(img.dtype)
print(img.dtype)
print(img.dtype.names)
print(img.dtype[0])
print(nta)
print([x[0] for x in nta])
print([x[0] for x in img.dtype])

此代码的打印输出(如下所示)表明我可以:1) 迭代元组列表;
2) 迭代重新排列;3) 将记录数组的数据类型检索为元组的明显列表;
4)从重新排列中检索名称5) 检索recarray中某一字段的格式

但我不能:

6) 迭代recarray dtype以检索每个字段的格式7)迭代recarray dtype转换为数组以检索每个字段的格式

输出是:

[1, 3, 5]
-----------------------
[5.0, 77.0]
-----------------------
[('r', '<f4'), ('g', '<i2'), ('b', '<f4')]
('r', 'g', 'b')
float32
[('r', '<f4'), ('g', '<i2'), ('b', '<f4')]
'import sitecustomize' failed; use -v for traceback
Traceback (most recent call last):
File "....\Python\test0.py", line 23, in <module>
print([x[0] for x in nta])
TypeError: iteration over a 0-d array

有谁知道如何从记录数组中以列表形式检索字段格式?

最佳答案

嗯嗯,新手找到了自己问题的答案。我需要“descr”属性将其转换为可迭代对象

print([x[1] for x in img.dtype.descr])

关于python - 以列表形式检索 numpy 记录数组的字段格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com