[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
사용 max
및 index
방법 :
List = np.array([34, 7, 33, 10, 89, 22, -5])
_max = List.tolist().index(max(List))
_max
>>> 4