[Numpy-discussion] loop through values in a array and find maximum as looping

Olivier Delalleau shish at keba.be
Tue Dec 6 21:36:43 EST 2011


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)

-=- Olivier

2011/12/6 questions anon <questions.anon at 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 <shish at 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 <njs at pobox.com>
>>
>>> I think you want
>>>   np.maximum(a, b, out=a)
>>>
>>> - Nathaniel
>>> On Dec 6, 2011 9:04 PM, "questions anon" <questions.anon at 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.pktd at gmail.com> wrote:
>>>>
>>>>> On Tue, Dec 6, 2011 at 7:55 PM, Olivier Delalleau <shish at 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.anon at 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 at scipy.org
>>>>> >> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>>> >>
>>>>> >
>>>>> >
>>>>> > _______________________________________________
>>>>> > NumPy-Discussion mailing list
>>>>> > NumPy-Discussion at scipy.org
>>>>> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>>> >
>>>>> _______________________________________________
>>>>> NumPy-Discussion mailing list
>>>>> NumPy-Discussion at scipy.org
>>>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> NumPy-Discussion mailing list
>>>> NumPy-Discussion at scipy.org
>>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>>
>>>>
>>> _______________________________________________
>>> NumPy-Discussion mailing list
>>> NumPy-Discussion at scipy.org
>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>
>>>
>>
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion at scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>
>>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20111206/050ec5c1/attachment.html>


More information about the NumPy-Discussion mailing list