From: Andrew S. <str...@as...> - 2004-05-26 17:43:20
|
Todd Miller wrote: >On Wed, 2004-05-26 at 12:06, Francesc Alted wrote: > > >>A Dimecres 26 Maig 2004 17:41, Todd Miller va escriure: >> >> >>>Here's how I did it (there was an easier way I overlooked): >>> >>>a = arange(10) >>>m1 = where(a > 5, 1, 0).astype('Bool') >>>m2 = where(a < 8, 1, 0).astype('Bool') >>>a[m1 & m2] = array([10, 20]) >>> >>> >>Perhaps the easier way looks like this? >> >> >> >>>>>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 Cheers! Andrew |