[Numpy-discussion] loop through values in a array and find maximum as looping
questions anon
questions.anon at gmail.com
Tue Dec 6 21:23:48 EST 2011
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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20111207/827f7dff/attachment.html>
More information about the NumPy-Discussion
mailing list