thanks for all of your help, that does look appropriate but I am not sure how to loop it over thousands of files. I need to keep the first array to compare with but replace any greater values as I loop through each array comparing back to the same array. does that make sense?
On Wed, Dec 7, 2011 at 1:12 PM, Olivier Delalleau <sh...@keba.be> wrote: > Thanks, I didn't know you could specify the out array :) > > (to the OP: my initial suggestion, although probably not very efficient, > seems to work with 2D arrays too, so I have no idea why it didn't work for > you -- but Nathaniel's one seems to be the ideal one anyway). > > -=- Olivier > > > 2011/12/6 Nathaniel Smith <n...@pobox.com> > >> I think you want >> np.maximum(a, b, out=a) >> >> - Nathaniel >> On Dec 6, 2011 9:04 PM, "questions anon" <questions.a...@gmail.com> >> wrote: >> >>> thanks for responding Josef but that is not really what I am looking >>> for, I have a multidimensional array and if the next array has any values >>> greater than what is in my first array I want to replace them. The data are >>> contained in netcdf files. >>> I can achieve what I want if I combine all of my arrays using numpy >>> concatenate and then using the command numpy.max(myarray, axis=0) but >>> because I have so many arrays I end up with a memory error so I need to >>> find a way to get the maximum while looping. >>> >>> >>> >>> On Wed, Dec 7, 2011 at 12:36 PM, <josef.p...@gmail.com> wrote: >>> >>>> On Tue, Dec 6, 2011 at 7:55 PM, Olivier Delalleau <sh...@keba.be> >>>> wrote: >>>> > It may not be the most efficient way to do this, but you can do: >>>> > mask = b > a >>>> > a[mask] = b[mask] >>>> > >>>> > -=- Olivier >>>> > >>>> > 2011/12/6 questions anon <questions.a...@gmail.com> >>>> >> >>>> >> I would like to produce an array with the maximum values out of many >>>> >> (10000s) of arrays. >>>> >> I need to loop through many multidimentional arrays and if a value is >>>> >> larger (in the same place as the previous array) then I would like >>>> that >>>> >> value to replace it. >>>> >> >>>> >> e.g. >>>> >> a=[1,1,2,2 >>>> >> 11,2,2 >>>> >> 1,1,2,2] >>>> >> b=[1,1,3,2 >>>> >> 2,1,0,0 >>>> >> 1,1,2,0] >>>> >> >>>> >> where b>a replace with value in b, so the new a should be : >>>> >> >>>> >> a=[1,1,3,2] >>>> >> 2,1,2,2 >>>> >> 1,1,2,2] >>>> >> >>>> >> and then keep looping through many arrays and replace whenever value >>>> is >>>> >> larger. >>>> >> >>>> >> I have tried numpy.putmask but that results in >>>> >> TypeError: putmask() argument 1 must be numpy.ndarray, not list >>>> >> Any other ideas? Thanks >>>> >>>> if I understand correctly it's a minimum.reduce >>>> >>>> numpy >>>> >>>> >>> a = np.concatenate((np.arange(5)[::-1], >>>> np.arange(5)))*np.ones((4,3,1)) >>>> >>> np.minimum.reduce(a, axis=2) >>>> array([[ 0., 0., 0.], >>>> [ 0., 0., 0.], >>>> [ 0., 0., 0.], >>>> [ 0., 0., 0.]]) >>>> >>> a.T.shape >>>> (10, 3, 4) >>>> >>>> python with iterable >>>> >>>> >>> reduce(np.maximum, a.T) >>>> array([[ 4., 4., 4., 4.], >>>> [ 4., 4., 4., 4.], >>>> [ 4., 4., 4., 4.]]) >>>> >>> reduce(np.minimum, a.T) >>>> array([[ 0., 0., 0., 0.], >>>> [ 0., 0., 0., 0.], >>>> [ 0., 0., 0., 0.]]) >>>> >>>> Josef >>>> >>>> >> >>>> >> _______________________________________________ >>>> >> NumPy-Discussion mailing list >>>> >> NumPy-Discussion@scipy.org >>>> >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >>>> >> >>>> > >>>> > >>>> > _______________________________________________ >>>> > NumPy-Discussion mailing list >>>> > NumPy-Discussion@scipy.org >>>> > http://mail.scipy.org/mailman/listinfo/numpy-discussion >>>> > >>>> _______________________________________________ >>>> NumPy-Discussion mailing list >>>> NumPy-Discussion@scipy.org >>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion >>>> >>> >>> >>> _______________________________________________ >>> NumPy-Discussion mailing list >>> NumPy-Discussion@scipy.org >>> http://mail.scipy.org/mailman/listinfo/numpy-discussion >>> >>> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion