[Numpy-discussion] numarray.where confusion
Alok Singhal
as8ca at virginia.edu
Wed May 26 11:04:13 CDT 2004
On 26/05/04: 10:43, Andrew Straw wrote:
> Todd Miller wrote:
> >On Wed, 2004-05-26 at 12:06, Francesc Alted wrote:
> >
> >>>>>a = arange(10)
> >>>>>a[(a>5) & (a<8)] = array([10, 20])
> >>>>>
> Is there an equivalently slick way to accomplish to what I'm trying
> below? (the the values in c[:,1] get changed based on the same-row
> values in c[:,0]?)
>
> from numarray import *
> a=arange(10)
> b=arange(10)+20
> c=concatenate((a[:,NewAxis],b[:,NewAxis]),axis=1)
> c[c[:,0]>7][:,1] = 0 # doesn't work because it makes a copy and
> therefore doesn't modify c
Well, for your case, the following works:
>>> print c
[[ 0 20]
[ 1 21]
[ 2 22]
[ 3 23]
[ 4 24]
[ 5 25]
[ 6 26]
[ 7 27]
[ 8 28]
[ 9 29]]
>>> t0 = c[:, 0]
>>> t1 = c[:, 1]
>>> t1[t0 > 7] = 0
>>> print c
[[ 0 20]
[ 1 21]
[ 2 22]
[ 3 23]
[ 4 24]
[ 5 25]
[ 6 26]
[ 7 27]
[ 8 0]
[ 9 0]]
Not sure this helps in your real code though.
Alok
--
Alok Singhal (as8ca at virginia.edu) * *
Graduate Student, dept. of Astronomy * * *
University of Virginia
http://www.astro.virginia.edu/~as8ca/ * *
More information about the Numpy-discussion
mailing list