jlconlin
jlconlin

Reputation: 15054

How to mask numpy structured array on multiple columns?

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] = ...

Upvotes: 11

Views: 1957

Answers (1)

Sven Marnach
Sven Marnach

Reputation: 601779

You can use the & operator instead of and:

A[(A['segment'] == 42) & (A['material'] == 5)]

Note that extra parantheses are required.

Upvotes: 12

Related Questions