[Python에 의한 과학·기술 계산] 정방 행렬의 최대(최소) 요소의 행·열의 인덱스의 취득, numpy
소개
정방 행렬의 요소의 최대치가 되는 인덱스의 행 번호·열 번호를 구합니다.
과학·기술 계산에서는 자주 하는 작업입니다. numpy.argmax 메소드를 사용합니다.
테스트에 사용할 행렬 C를 구축합니다.
C=np.array( [[1,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
C의 최대 값은 인덱스 [3,2]에 있습니다.
그리고 이것을 추구하기 위해
np.argmax(C)
하지만 불행히도 인덱스를 0에서 일련 번호인 "14"가 반환되는 것만으로, 원하는 행·열의 요소 번호인 [3,2]를 얻을 수 없습니다.
이 논문에서는 위의 [3,2]를 얻는 코드를 만듭니다.
# 더 간단하게 할 수있는 방법이 있으면 알려 주시면 감사하겠습니다. .
추가 2017년 10월 5일
Satoshi Terasaki는 가장 쉬운 방법을 가르쳐 주었습니다. Satoshi Terasaki, 고마워요!
C=np.array( [[1,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
np.argwhere(C == C.max())
그냥 괜찮습니다.
비대각 요소의 최대값 등도 찾아보면 간단한 방법이 있을지도 모릅니다.
알면 업데이트하겠습니다.
코드
매우 간단합니다.
요약하면 행 수의 숫자를 계산하기 위해 행렬의 크기 (지금의 경우 4)로 나눌 수있는 최대 정수 값이 열의 인덱스 번호와 나머지가 행의 인덱스 번호에 해당하므로 파이썬 내장 함수인 "//"와 "%"를 사용하면 ok입니다.
#行列Cの定義
C=np.array( [[1,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
index=np.argmax(C)
# メイン
index_list=[]
i = index // len(C) # 行のインデックス番号の取得
j = index % len(C) # 列のインデックス番号
index_list.append(i)
index_list.append(j)
print(index_list)
결과
[3, 2]
원하는 결과를 얻었습니다.
발전
이하, 다양한 이용 장면을 생각합니다.
비대각 요소의 최대값
비대각 요소의 최대 값을 찾는 경우,
먼저 대각선 요소를 0으로 만든 다음 위의 코드를 실행합니다.
C=np.array( [[21,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
for i in range(len(C)) :
C[i,i] = 0
#
index_list=[]
index=np.argmax(C)
i = index // len(C)
j = index % len(C)
index_list.append(i)
index_list.append(j)
print(index_list)
결과:
숫자가 21인 [0,0]이 아니라 제대로 [3, 2]를 반환합니다.
비대각 요소의 절대값의 최대값
행렬이 다음과 같이 음의 큰 수를 포함하는 경우입니다.
절대값이 100인 인덱스 [1,2]를 가져옵니다.
이를 위해서는 요소의 절대 값을 취한 것을 미리 만든 다음 위의 방법을 적용합니다.
#行列Cの定義
C=np.array( [[1,2,3,-4],[2,5,-100,0],[3,4,1,1],[-4,0,10,2]])
D= np.abs(C) # 絶対値をとったものに変換しそれをDとする
index=np.argmax(D)
# メイン
index_list=[]
i = index // len(C) # 行のインデックス番号¥の取得
j = index % len(C) # 列のインデックス番号
index_list.append(i)
index_list.append(j)
print(index_list)
결과
[1, 2]
좋아.
최소값의 경우
예를 들어 다음 행렬을 생각해 봅시다.
음의 최대값 -10의 인덱스는 [3,1]입니다. 이것을 가져옵니다.
이를 위해 요소의 최소값 인덱스를 반환하는 np.argmin 메서드를 사용합니다.
C=np.array( [[21,2,3,-9],[2,5,4,0],[3,4,1,1],[-4,-10,10,2]])
index=np.argmin(C)
for i in range(len(C)) :
C[i,i] = 0
#
index_list=[]
i = index // len(C)
j = index % len(C)
index_list.append(i)
index_list.append(j)
print(index_list)
결과
[3, 1]
좋아.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 정방 행렬의 최대(최소) 요소의 행·열의 인덱스의 취득, numpy), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sci_Haru/items/bd9736acf74cd5ca42e2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
C=np.array( [[1,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
np.argmax(C)
C=np.array( [[1,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
np.argwhere(C == C.max())
매우 간단합니다.
요약하면 행 수의 숫자를 계산하기 위해 행렬의 크기 (지금의 경우 4)로 나눌 수있는 최대 정수 값이 열의 인덱스 번호와 나머지가 행의 인덱스 번호에 해당하므로 파이썬 내장 함수인 "//"와 "%"를 사용하면 ok입니다.
#行列Cの定義
C=np.array( [[1,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
index=np.argmax(C)
# メイン
index_list=[]
i = index // len(C) # 行のインデックス番号の取得
j = index % len(C) # 列のインデックス番号
index_list.append(i)
index_list.append(j)
print(index_list)
결과
[3, 2]
원하는 결과를 얻었습니다.
발전
이하, 다양한 이용 장면을 생각합니다.
비대각 요소의 최대값
비대각 요소의 최대 값을 찾는 경우,
먼저 대각선 요소를 0으로 만든 다음 위의 코드를 실행합니다.
C=np.array( [[21,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
for i in range(len(C)) :
C[i,i] = 0
#
index_list=[]
index=np.argmax(C)
i = index // len(C)
j = index % len(C)
index_list.append(i)
index_list.append(j)
print(index_list)
결과:
숫자가 21인 [0,0]이 아니라 제대로 [3, 2]를 반환합니다.
비대각 요소의 절대값의 최대값
행렬이 다음과 같이 음의 큰 수를 포함하는 경우입니다.
절대값이 100인 인덱스 [1,2]를 가져옵니다.
이를 위해서는 요소의 절대 값을 취한 것을 미리 만든 다음 위의 방법을 적용합니다.
#行列Cの定義
C=np.array( [[1,2,3,-4],[2,5,-100,0],[3,4,1,1],[-4,0,10,2]])
D= np.abs(C) # 絶対値をとったものに変換しそれをDとする
index=np.argmax(D)
# メイン
index_list=[]
i = index // len(C) # 行のインデックス番号¥の取得
j = index % len(C) # 列のインデックス番号
index_list.append(i)
index_list.append(j)
print(index_list)
결과
[1, 2]
좋아.
최소값의 경우
예를 들어 다음 행렬을 생각해 봅시다.
음의 최대값 -10의 인덱스는 [3,1]입니다. 이것을 가져옵니다.
이를 위해 요소의 최소값 인덱스를 반환하는 np.argmin 메서드를 사용합니다.
C=np.array( [[21,2,3,-9],[2,5,4,0],[3,4,1,1],[-4,-10,10,2]])
index=np.argmin(C)
for i in range(len(C)) :
C[i,i] = 0
#
index_list=[]
i = index // len(C)
j = index % len(C)
index_list.append(i)
index_list.append(j)
print(index_list)
결과
[3, 1]
좋아.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 정방 행렬의 최대(최소) 요소의 행·열의 인덱스의 취득, numpy), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sci_Haru/items/bd9736acf74cd5ca42e2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이하, 다양한 이용 장면을 생각합니다.
비대각 요소의 최대값
비대각 요소의 최대 값을 찾는 경우,
먼저 대각선 요소를 0으로 만든 다음 위의 코드를 실행합니다.
C=np.array( [[21,2,3,-4],[2,5,4,0],[3,4,1,1],[-4,0,10,2]])
for i in range(len(C)) :
C[i,i] = 0
#
index_list=[]
index=np.argmax(C)
i = index // len(C)
j = index % len(C)
index_list.append(i)
index_list.append(j)
print(index_list)
결과:
숫자가 21인 [0,0]이 아니라 제대로 [3, 2]를 반환합니다.
비대각 요소의 절대값의 최대값
행렬이 다음과 같이 음의 큰 수를 포함하는 경우입니다.
절대값이 100인 인덱스 [1,2]를 가져옵니다.
이를 위해서는 요소의 절대 값을 취한 것을 미리 만든 다음 위의 방법을 적용합니다.
#行列Cの定義
C=np.array( [[1,2,3,-4],[2,5,-100,0],[3,4,1,1],[-4,0,10,2]])
D= np.abs(C) # 絶対値をとったものに変換しそれをDとする
index=np.argmax(D)
# メイン
index_list=[]
i = index // len(C) # 行のインデックス番号¥の取得
j = index % len(C) # 列のインデックス番号
index_list.append(i)
index_list.append(j)
print(index_list)
결과
[1, 2]
좋아.
최소값의 경우
예를 들어 다음 행렬을 생각해 봅시다.
음의 최대값 -10의 인덱스는 [3,1]입니다. 이것을 가져옵니다.
이를 위해 요소의 최소값 인덱스를 반환하는 np.argmin 메서드를 사용합니다.
C=np.array( [[21,2,3,-9],[2,5,4,0],[3,4,1,1],[-4,-10,10,2]])
index=np.argmin(C)
for i in range(len(C)) :
C[i,i] = 0
#
index_list=[]
i = index // len(C)
j = index % len(C)
index_list.append(i)
index_list.append(j)
print(index_list)
결과
[3, 1]
좋아.
Reference
이 문제에 관하여([Python에 의한 과학·기술 계산] 정방 행렬의 최대(최소) 요소의 행·열의 인덱스의 취득, numpy), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sci_Haru/items/bd9736acf74cd5ca42e2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)