On Tue, Dec 6, 2011 at 9:36 PM, Olivier Delalleau <sh...@keba.be> wrote: > The "out=a" keyword will ensure your first array will keep being updated. So > you can do something like: > > a = my_list_of_arrays[0] > for b in my_list_of_arrays[1:]: > numpy.maximum(a, b, out=a)
I didn't think of the out argument which makes it more efficient, but in my example I used Python's reduce which takes an iterable and not one huge array. Josef > > -=- Olivier > > 2011/12/6 questions anon <questions.a...@gmail.com> >> >> 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 >> > > > _______________________________________________ > 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