[Numpy-discussion] Masking an array with another array

josef.pktd at gmail.com josef.pktd at gmail.com
Wed Apr 22 21:03:57 EDT 2009


On Wed, Apr 22, 2009 at 8:18 PM, Gökhan SEVER <gokhansever at gmail.com> wrote:
> Yes Pierre,
>
> I like this one line of elegances in Python a lot. I was thinking that the
> answer lies in somewhere in masked array operations, but I proved wrong.
>
> Thanks for your input on this small riddle.
>
> Here is another way of doing that. (That's what I thought of initially and
> what Matthias Michler responded on matplotlib mailing list.)
>
> mask = zeros(len(a), dtype=bool)
> for index in xrange(len(a)):        # run through array a
>    if a[index] in b:
>        mask[index] = True
>
>
> Ending with a quote about Pythonicness :)
>
> "...that something is Pythonic when it has a sense of quality, simplicity,
> clarity and elegance about it."
>
>
> Gökhan
>
>
> On Wed, Apr 22, 2009 at 4:49 PM, Pierre GM <pgmdevlist at gmail.com> wrote:
>>
>> On Apr 22, 2009, at 5:21 PM, Gökhan SEVER wrote:
>>
>> > Hello,
>> >
>> > Could you please give me some hints about how to mask an array using
>> > another arrays like in the following example.
>>
>> What about that ?
>> numpy.logical_or.reduce([a==i for i in b])
>>
>>

I prefer broad casting to list comprehension in numpy:

>>> a = np.arange(5)
>>> b = np.array([2,3])

>>> (a[:,np.newaxis]==b).any(1)
array([False, False,  True,  True, False], dtype=bool)

Josef



More information about the NumPy-Discussion mailing list