gpt4 book ai didi

NumPy:检查字段是否存在

转载 作者:行者123 更新时间:2023-12-05 00:41:27 24 4
gpt4 key购买 nike

我有一个结构化的 numpy 数组:

>>> import numpy
>>> a = numpy.zeros(1, dtype = [('field0', 'i2'), ('field1', 'f4')])

然后我开始检索一些值。但是,我事先不知道我的数组是否包含某个字段。因此,如果我尝试访问一个不存在的字段,我预计会收到 IndexError:

>>> a[0]['field0']
0
>>> a[0]['field2']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: invalid index

我当然可以使用 try-except;但是,这可能会掩盖一些错误,因为 IndexError 没有指定,我在哪个级别上遇到了不存在的索引:

>>> try:
... a[9999]['field2']['subfield3']
... except IndexError:
... print('Some index does not exist')
...
Some index does not exist

我也尝试将 numpy 数组作为列表来处理,但这不起作用:

>>> if 'field0' in a[0]:
... print('yes')
... else:
... print('no')
...
no

因此,问题:有没有办法检查给定字段是否存在于结构化 numpy 数组中?

最佳答案

您可以检查 .dtype.names.dtype.fields:

>>> a.dtype.names
('field0', 'field1')
>>> 'field0' in a.dtype.names
True
>>> a.dtype.fields
mappingproxy({'field0': (dtype('int16'), 0), 'field1': (dtype('float32'), 2)})
>>> 'field0' in a.dtype.fields
True

关于NumPy:检查字段是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34400924/

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