[Numpy-discussion] Re: array.argmax() question
Ryan Krauss
ryanlists at gmail.com
Thu Feb 23 18:11:06 EST 2006
Is the right answer to just use flatten()?
i.e. ind=abs(mymat).argmax()
maxelem=mymat.flatten()[ind]
On 2/23/06, Ryan Krauss <ryanlists at gmail.com> wrote:
> Is this the expected behavior for array.argmax():
>
> ipdb> abs(real(disps)).max()
> Out[38]: 1.7373584411866401e-05
> ipdb> abs(real(disps)).argmax()
> Out[38]: 32
> ipdb> shape(disps)
> Out[38]: (11, 3)
> ipdb> disps[11,1]
> *** IndexError: invalid index
> ipdb> disps[10,1]
> Out[38]: 0j
> ipdb> disps[10,2]
> Out[38]: (-1.7373584411866401e-05+5.2046737124258386e-21j)
>
> Basically, I want to find the element with the largest absolute value
> in a matrix and use it to scale by. But I need to correct for the
> possibility that the largest abs value may be from a negative number.
> So, I need to get the corresponding element itself.
>
> My array is shape (11,3) and argmax without an axis argument returns
> 32, which would be the index if the matrix was reshaped into a (33,)
> vector. Is there a clean way to extract the element based on the
> output of argmax? (and in my case it is actually using the output of
> argmax to extract the element from the matrix without the abs). Or do
> I need to reshape the matrix into a vector first?
>
> Thanks,
>
> Ryan
>
More information about the NumPy-Discussion
mailing list