numpy : argmin in multidimensional arrays

T

TG

Hi there.

I am working with multi-dimensional arrays and I need to get
coordinates of the min value in it.

using myarray.argmin() returns the index in the flatten array, which is
a first step, but I wonder if it is possible to get the coordinates
directly as an array, rather than calculating them myself by using this
flat index and the shape of the array.

well, in fact i'm not sure to understand how argmin(myarray) works,
when myarray is multidimensional.

Thanks
 
T

Travis E. Oliphant

TG said:
Hi there.

I am working with multi-dimensional arrays and I need to get
coordinates of the min value in it.

using myarray.argmin() returns the index in the flatten array, which is
a first step, but I wonder if it is possible to get the coordinates
directly as an array, rather than calculating them myself by using this
flat index and the shape of the array.

well, in fact i'm not sure to understand how argmin(myarray) works,
when myarray is multidimensional.


By default, the argmin method flattens the array and returns the flat
index. You can get the corresponding element using

myarray.flat[index]

Alternatively, you can use the function unravel_index

unravel_index(flat_index, myarray.shape)

to return an N-dimensional index.


If you give an axis argument, then the minimum is found along the
specified dimension and you get an N-1 dimensional array of indices that
will all be between 1 and myarray.shape[axis]


-Travis
 
T

TG

thanks. unravel_index do the trick.
TG said:
Hi there.

I am working with multi-dimensional arrays and I need to get
coordinates of the min value in it.

using myarray.argmin() returns the index in the flatten array, which is
a first step, but I wonder if it is possible to get the coordinates
directly as an array, rather than calculating them myself by using this
flat index and the shape of the array.

well, in fact i'm not sure to understand how argmin(myarray) works,
when myarray is multidimensional.


By default, the argmin method flattens the array and returns the flat
index. You can get the corresponding element using

myarray.flat[index]

Alternatively, you can use the function unravel_index

unravel_index(flat_index, myarray.shape)

to return an N-dimensional index.


If you give an axis argument, then the minimum is found along the
specified dimension and you get an N-1 dimensional array of indices that
will all be between 1 and myarray.shape[axis]


-Travis
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,680
Members
48,796
Latest member
Greg L.

Latest Threads

Top