当前位置:  开发笔记 > 编程语言 > 正文

NumPy:检查字段是否存在

如何解决《NumPy:检查字段是否存在》经验,为你挑选了1个好方法。

我有一个结构化的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 "", line 1, in 
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数组中是否存在给定字段?



1> DSM..:

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

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有