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