NumPy:检查字段是否存在

NumPy:检查字段是否存在,numpy,Numpy,我有一个结构化的numpy数组: >>> import numpy >>> a = numpy.zeros(1, dtype = [('field0', 'i2'), ('field1', 'f4')]) 然后我开始检索一些值。但是,我事先不知道我的数组是否包含某个字段。因此,如果我试图访问一个不存在的字段,我期望得到的是索引器: >>> a[0]['field0'] 0 >>> a[0]['field2'] Traceb

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

>>> import numpy
>>> a = numpy.zeros(1, dtype = [('field0', 'i2'), ('field1', 'f4')])
然后我开始检索一些值。但是,我事先不知道我的数组是否包含某个字段。因此,如果我试图访问一个不存在的字段,我期望得到的是
索引器

>>> a[0]['field0']
0
>>> a[0]['field2']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: invalid index
我还尝试将
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

您可以检查
.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