From: Alok S. <as...@vi...> - 2004-05-26 18:03:41
|
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 (as...@vi...) * * Graduate Student, dept. of Astronomy * * * University of Virginia http://www.astro.virginia.edu/~as8ca/ * * |