From: Pau G. <pau...@gm...> - 2006-06-21 17:31:50
|
On 6/21/06, Travis Oliphant <oli...@ie...> wrote: > Pau Gargallo wrote: > > On 6/21/06, Travis Oliphant <oli...@ie...> 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. > ok so: a[ b1, b2 ] will be different than a[ ix_(b1,b2) ] just like with integer indices. Make sense to me. also, a[b] will be as before (a[where(b)]) ? maybe a trailing coma could lunch the new behaviour? a[b] -> a[where(b)] a[b,] -> a[b,...] -> a[nonzero(b)] Thanks, pau |