[python] 다차원 NumPy 배열에서 가장 큰 값의 위치를 ​​가져옵니다.

다차원 NumPy 배열에서 가장 큰 값의 위치 (인덱스)를 어떻게 얻을 수 있습니까?



답변

argmax()방법은 도움이 될 것입니다.

최신 정보

(댓글을 읽은 후)이 argmax()방법이 다차원 배열에서도 작동 할 것이라고 생각합니다 . 링크 된 문서는 이에 대한 예를 제공합니다.

>>> a = array([[10,50,30],[60,20,40]])
>>> maxindex = a.argmax()
>>> maxindex
3

업데이트 2

( KennyTM 의 의견에 감사드립니다 ) unravel_index(a.argmax(), a.shape)인덱스를 튜플로 가져 오는 데 사용할 수 있습니다 .

>>> from numpy import unravel_index
>>> unravel_index(a.argmax(), a.shape)
(1, 0)


답변

(편집) 삭제 된 이전 답변을 언급했습니다 . 그리고 받아 들인 대답은 내 뒤를 따랐습니다. 나는 그것이 argmax내 대답보다 낫다는 데 동의합니다 .

이렇게하는 것이 더 읽기 쉽고 직관적이지 않습니까?

numpy.nonzero(a.max() == a)
(array([1]), array([0]))

또는,

numpy.argwhere(a.max() == a)


답변

(2d에서만 작동하는) 함수를 간단히 작성할 수 있습니다.

def argmax_2d(matrix):
    maxN = np.argmax(matrix)
    (xD,yD) = matrix.shape
    if maxN >= xD:
        x = maxN//xD
        y = maxN % xD
    else:
        y = maxN
        x = 0
    return (x,y)


답변

다른 방법은 변화입니다 numpy에 배열 list사용 maxindex방법 :

List = np.array([34, 7, 33, 10, 89, 22, -5])
_max = List.tolist().index(max(List))
_max
>>> 4


답변