使用ar['foo'][ar['bar'] == 0]
:
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')])
print(ar['bar'] == 0)
# array([ True, True, True, False, False, False], dtype=bool)
result = ar['foo'][ar['bar'] == 0]
print(result)
# array([ 760. , 760.29998779, 760.5 ], dtype=float32)
ブール型セレクション マスクar['bar'] == 0
が使用されているため、result
はの一部のコピーar['foo']
であることに注意してください。したがって、変更してもそれ自体result
には影響しませんar
。
ar
assign to をar['foo'][mask]
直接変更するには:
mask = (ar['bar'] == 0)
ar['foo'][mask] = 100
print(ar)
# array([(100.0, 0), (100.0, 0), (100.0, 0), (280.0, 1), (320.0, 1), (290.0, 1)],
# dtype=[('foo', '<f4'), ('bar', '<i4')])
に影響するar['foo'][mask]
呼び出しへの割り当て。 は のビューであるため、変更するとに影響します。ar['foo'].__setitem__
ar['foo']
ar['foo']
ar
ar['foo']
ar
ここでは、インデックスの順序が重要であることに注意してください。'foo'
次のように、フィールドを選択する前にブール値マスクを適用しようとした場合:
ar[mask]['foo'] = 99
は のコピーであるため、これは影響しません。コピー ( ) に対して何も行われても、元の ( ) には影響しません。ar
ar[mask]
ar
ar[mask]
ar