我正在使用具有以下结构的NumPy结构化数组:
ar = np.array([(760., 0), (760.3, 0), (760.5, 0), (280.0, 1), (320.0, 1), (290.0, 1)], dtype=[('foo', 'f4'),('bar', 'i4')])
对于“bar”的特定值,提取“foo”字段的有效方法是什么?例如,我想将“bar”为0的所有“foo”值存储在一个数组中:
fooAr = ar['foo'] if ar['bar'] is 0
上述方法不起作用。你知道吗
Tags:
使用
ar['foo'][ar['bar'] == 0]
:注意,由于使用了布尔选择掩码
ar['bar'] == 0
,因此result
是ar['foo']
部分的拷贝。 因此,修改result
不会影响ar
本身。你知道吗要直接修改
ar
赋值给ar['foo'][mask]
,请执行以下操作:分配给
ar['foo'][mask]
调用ar['foo'].__setitem__
,影响ar['foo']
。 由于ar['foo']
是ar
的视图,修改ar['foo']
会影响ar
。你知道吗请注意,这里索引的顺序很重要。如果你尝试应用布尔掩码 在选择
'foo'
字段之前,如中所示:那么这不会影响
ar
,因为ar[mask]
是ar
的拷贝。 对副本(ar[mask]
)所做的任何操作都不会影响原件(ar
)。你知道吗相关问题 更多 >
编程相关推荐