답변:
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,3,1]])
>>> i,j = np.unravel_index(a.argmax(), a.shape)
>>> a[i,j]
4
a = np.array([[1,4,3],[4,3,1]])
가 반환 있는지 i,j==0,1
, 그리고의 솔루션을 무시한다 i,j==1,0
. 모든 최대 값의 인덱스를 위해 대신 사용하십시오 i,j = where(a==a.max()
.
argmax()
각 행에 대한 첫 번째 항목 만 반환합니다.
http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.html
모양이 지정된 배열에 대해이 작업을 수행해야하는 경우 다음보다 더 잘 작동합니다 unravel
.
import numpy as np
a = np.array([[1,2,3], [4,3,1]]) # Can be of any shape
indices = np.where(a == a.max())
조건을 변경할 수도 있습니다.
indices = np.where(a >= 1.5)
위의 내용은 요청한 양식으로 결과를 제공합니다. 또는 다음과 같이 x, y 좌표 목록으로 변환 할 수 있습니다.
x_y_coords = zip(indices[0], indices[1])
indices = np.where(a==a.max())
3 번 줄에있는 건가요?
.max()
대신 @ atomh33ls가 지적한 두 번째 오류 가 .argmax()
있습니다. 답을 수정하세요
x_y_coord = [(0, 2), (1, 1)]
@eumiro 답변과 일치하지 않으며 잘못되었습니다. 예를 들어, a = array([[7,8,9],[10,11,12]])
코드에이 입력에 대한 적중이 없는지 확인하십시오. 또한 이것이 더 잘 작동한다고 언급 unravel
했지만 @blas가 게시 한 솔루션은 한 축을 따라 jsut이 아닌 절대 최대 문제에 답합니다.