Tengo una matriz NumPy bidimensional. Sé cómo obtener los valores máximos sobre ejes:
>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])
¿Cómo puedo obtener los índices de los elementos máximos? Entonces me gustaría como salidaarray([1,1,0])
fuente
a = np.array([[1,4,3],[4,3,1]])
ver que regresai,j==0,1
y descuida la solución eni,j==1,0
. Para los índices de todos los máximos utilice en su lugari,j = where(a==a.max()
.argmax()
solo devolverá la primera aparición de cada fila. http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.htmlSi alguna vez necesita hacer esto para una matriz con forma, esto funciona mejor que
unravel
:También puede cambiar sus condiciones:
Lo anterior le brinda resultados en el formulario que solicitó. Alternativamente, puede convertir a una lista de coordenadas x, y mediante:
fuente
indices = np.where(a==a.max())
a la línea 3?.max()
lugar de.argmax()
. Edite la respuestax_y_coord = [(0, 2), (1, 1)]
que NO coincide con la respuesta de @eumiro y es incorrecta. Por ejemplo, intentea = array([[7,8,9],[10,11,12]])
ver que su código no tenga ningún impacto en esta entrada. También mencionas que esto funciona mejor queunravel
, pero la solución publicada por @blas responde al problema del máximo absoluto, no solo a lo largo de un eje.fuente