I have a numpy structured array with a dtype such as:
A = numpy.empty(10, dtype=([('segment', '<i8'), ('material', '<i8'), ('rxN', '<i8')]))
I know I can create a mask such as:
A[A['segment'] == 42] = ...
Is there a way to create a mask on multiple columns? For example (I know this doesn't work, but I wish it did):
A[A['segment'] == 42 and A['material'] == 5] = ...
A masked array is the combination of a standard numpy. ndarray and a mask. A mask is either nomask , indicating that no value of the associated array is invalid, or an array of booleans that determines for each element of the associated array whether the value is valid or not.
recarray, which allows field access by attribute on the array object, and record arrays also use a special datatype, numpy. record, which allows field access by attribute on the individual elements of the array.
You can use the &
operator instead of and
:
A[(A['segment'] == 42) & (A['material'] == 5)]
Note that extra parantheses are required.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With