[Numpy-discussion] Selecting columns of a matrix

Travis Oliphant oliphant.travis at ieee.org
Wed Jun 21 12:22:04 CDT 2006

```Pau Gargallo wrote:
> On 6/21/06, Travis Oliphant <oliphant.travis at ieee.org> wrote:
>
>> Johannes Loehnert wrote:
>>
>>> Hi,
>>>
>>>
>>>
>>>> I'm not sure why bool arrays cannot be used as indices.
>>>> The "natural" solution to the original problem seemed to be:
>>>> M[:,V>0]
>>>> but this is not allowed.
>>>>
>>>>
>>> I started a thread on this earlier this year. Try searching the archive for
>>> "boolean indexing" (if it comes back online somewhen).
>>>
>>> Travis had some reason for not implementing this, but unfortunately I do not
>>> remember what it was. The corresponding message might still linger on my home
>>>
>>> PC, which I can access this evening....
>>>
>>>
>> I suspect my reason was just not being sure if it could be explained
>> consistently.  But, after seeing this come up again.   I decided it was
>> easy enough to implement.
>>
>> So, in SVN NumPy, you will be able to do
>>
>> a[:,V>0]
>> a[V>0,:]
>>
>> The V>0 will be replaced with integer arrays as if nonzero(V>0) had been
>> called.
>>
>>
>
> does it work for a[<boolean>,<boolean>] ?
>
Sure, it will work.  Basically all boolean arrays will be interpreted as
nonzero(V>0), everywhere.
> what about a[ix_( nonzero(<boolean>), nonzero(<boolean>) )] ?
>
> maybe the <boolean> to nonzero(<boolean>) conversion would be more
> coherently done by the ix_ function than by the []
>
>
I've just added support for <boolean> inside ix_  so that the nonzero
will be done automatically as well.

So

a[ix_(<boolean>,<boolean>)]  will give the cross-product selection.

-Travis

```