Eu tenho uma matriz NumPy bidimensional. Eu sei como obter os valores máximos sobre os eixos:
>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])
Como posso obter os índices dos elementos máximos? Então, eu gostaria como saídaarray([1,1,0])
fonte
a = np.array([[1,4,3],[4,3,1]])
para ver se ele voltai,j==0,1
, e negligencia a solução emi,j==1,0
. Para os índices de todos os máximos, usei,j = where(a==a.max()
.argmax()
retornará apenas a primeira ocorrência de cada linha. http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.htmlSe você precisar fazer isso para uma matriz em forma, funciona melhor do que
unravel
:Você também pode alterar suas condições:
O texto acima fornece os resultados na forma que você solicitou. Como alternativa, você pode converter para uma lista de coordenadas x, y:
fonte
indices = np.where(a==a.max())
na linha 3?.max()
vez de.argmax()
. Edite a respostax_y_coord = [(0, 2), (1, 1)]
que NÃO corresponde à resposta @eumiro e está errada. Por exemplo, tentea = array([[7,8,9],[10,11,12]])
ver se o seu código não tem nenhum acerto nesta entrada. Você também mencionou que funciona melhor queunravel
, mas a solução postada por @blas responde ao problema do máximo absoluto, não apenas ao longo de um eixo.fonte