python 의 np.argmax()및 axis=0 또는 1 에 대한 이해
1.np.argmax()의 이해
1.가장 쉬 운 예
현재 배열 a=[3,1,2,4,6,1]이 있다 고 가정 하면 현재 배열 a 에서 가장 큰 색인 이 얼마 인지 계산 해 야 합 니 다.가장 직접적인 사고방식 은 먼저 0 번 째 수가 가장 크다 고 가정 한 다음 에 이것 과 뒤의 수 를 비교 해서 큰 것 을 찾 으 면 색인 을 업데이트 한다.코드 는 다음 과 같다.
a = [3, 1, 2, 4, 6, 1]
maxindex = 0
i = 0
for tmp in a:
if tmp > a[maxindex]:
maxindex = i
i += 1
print(maxindex)
이 문 제 는 우리 가 argmax 를 이해 하 는 데 도움 을 줄 수 있다.2.함수 의 해석
1 차원 배열
import numpy as np
a = np.array([3, 1, 2, 4, 6, 1])
print(np.argmax(a))
argmax 는 최대 수의 색인 을 되 돌려 줍 니 다.argmax 는 하나의 매개 변수 axis 가 있 습 니 다.기본 값 은 0 이 고 몇 번 째 차원 의 최대 치 를 표시 합 니 다.2 차원 배열
import numpy as np
a = np.array([[1, 5, 5, 2],
[9, 6, 2, 8],
[3, 7, 9, 1]])
print(np.argmax(a, axis=0))
설명 이 편리 하도록 a 는 이 2 차원 배열 을 나타 낸다.np.argmax(a,axis=0)의 의 미 는 a[0][j],a[1][j],a[2]j 중 최대 치 의 색인 이다.a[0][j]부터 최대 치 색인 은 처음에(0,0,0,0)이 었 고 a[0][j]와 a[1][j]를 비 교 했 을 때 9 는 1,6 보다 5,8 은 2 보다 많 았 기 때문에 최대 치 색인 은(0,0,0,0)에서(1,1,0,1)로 업데이트 되 었 고 a[2][j]와 비 교 했 을 때 7 은 6,9 보다 5 가 많 기 때문에(1,2,2,1)로 업데이트 되 었 다.다음 출력 을 분석 합 니 다.
import numpy as np
a = np.array([[1, 5, 5, 2],
[9, 6, 2, 8],
[3, 7, 9, 1]])
print(np.argmax(a, axis=1))
np.argmax(a,axis=1)의 의 미 는 a[i][0],a[i][1],a[i][2],a[i]3 의 최대 치 색인 이다.a[i][0]부터 a[i][0]에 대응 하 는 색인 은(0,0,0)이다.먼저 최대 치 색인(사고 와 상절 의 간단 한 예 가 완전히 일치)이 라 고 가정 하고 a[0]과 a[0][1]을 비교 한 다음 에 5 가 1,7 이 3 보다 크 기 때문에 최대 치 색인 은(0,0,0)에서(1,0,1)로 업데이트 한 다음 에 a[i][2]와 비교 한 다음 에 9 가 7 보다 크 고(1,0,2)로 업데이트 한 다음 에 a[i][3]와 비교 할 필요 가 없다.최종 값 은(1,0,2)이다.3 차원 배열
import numpy as np
a = np.array([
[
[1, 5, 5, 2],
[9, -6, 2, 8],
[-3, 7, -9, 1]
],
[
[-1, 5, -5, 2],
[9, 6, 2, 8],
[3, 7, 9, 1]
]
])
print(np.argmax(a, axis=0))
np.argmax(a,axis=0)의 의 미 는 a[0][j][k],a[1][j][k](j=0,1,2,k=0,1,2,3)에서 가장 큰 값 의 색인 이다.a[0][j][k]부터 a[0][j][k]에 대응 하 는 색인 은(0,0,0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0),a[0][k][1][j][k]에 대응 하 는 항목 을 비교 6 이-6 보다 크 고 3 이-3 보다 크 고 9 가-9 보다 크 므 로 이 몇 자리 의 색인 을 업데이트 하면(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)을(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0),(1,0,1,0)...
axis=1 의 상황 을 다시 봅 니 다.
import numpy as np
a = np.array([
[
[1, 5, 5, 2],
[9, -6, 2, 8],
[-3, 7, -9, 1]
],
[
[-1, 5, -5, 2],
[9, 6, 2, 8],
[3, 7, 9, 1]
]
])
print(np.argmax(a, axis=1))
np.argmax(a,axis=1)의 의 미 는 a[i][0][k],a[i][1][k](i=0,1,k=0,1,2,3)에서 가장 큰 색인 이다.[[a][0][k][0][0][k]에 대응 하 는 색인 은(0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1),(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)),현재 최대 값(대응 하 는 배열 그룹(9,5,5,8),(9,6,2,8).다시(9,5,5,8),(9,6,2,8)와 a[2][k]의 대응 항목 을 비교 하면 7 이 5 보다 크 고 7 이 6 보다 크 며 9 가 2 보다 크다.
(1,0,0,1),(1,1,1,1)를(1,2,0,1)로 업데이트 하 는 경우 도 비슷 하 다.
2.axis 에 대한 이해
axis 를 설정 하 는 주요 원인 은 우리 가 여러 차원 의 계산 을 편리 하 게 하 는 것 이다.
예 를 들 어 이해 하 다
예 를 들 면:
a = np.array([[1, 2, 3],
[2, 3, 4],
[5, 4, 3],
[8, 7, 2]])
np.argmax(a, 0) # :array([3, 3, 1]
np.argmax(a, 1) # :array([2, 2, 0, 0]
axis = 0:그렇게 생각 하 세 요.0 은 가장 큰 범위 입 니 다.모든 배열 을 비교 해 야 합 니 다.다만 이 배열 들 의 같은 위치 에 있 는 수(제 이 해 는 0 열 비교 출력)를 비교 해 야 합 니 다.
a[0] = array([1, 2, 3])
a[1] = array([2, 3, 4])
a[2] = array([5, 4, 3])
a[3] = array([8, 7, 2])
# output : [3, 3, 1]
axis=1:(줄 비교 출력)1 과 같 을 때 비교 범위 가 좁 아 지면 각 배열 안의 수의 크기 만 비교 하고 결 과 는 몇 개의 배열 에 따라 몇 개의 결 과 를 얻 을 수 있다.
a[0] = array([1, 2, 3]) #2
a[1] = array([2, 3, 4]) #2
a[2] = array([5, 4, 3]) #0
a[3] = array([8, 7, 2]) #0
특례이것 은 모두 배열 의 길이 가 일치 하 는 상황 입 니 다.일치 하지 않 으 면 axis 의 최대 치 는 가장 작은 배열 의 길이-1 이 고 초과 하면 오 류 를 보고 합 니 다.
일치 하지 않 을 때 axis=0 의 비교 도 각 배열 의 비교 가 된다.
비교 예 는 아래 와 같다.
배열 길이 가 같 을 때
import numpy as np
a = np.array([
[
[1, 5, 5, 2],
[9, -6, 2, 8],
[-3, 7, -9, 1]
],
[
[-1, 5, -5, 2],
[9, 6, 2, 8],
[3, 7, 9,1]
]
])
print(np.argmax(a, axis=0))
print(np.argmax(a, axis=1))
출력[[0 0 0 0]
[0 1 0 0]
[1 0 1 0]]
[[1 2 0 1]
[1 2 2 1]]
배열 의 길이 가 다 를 때,
a = np.array([
[
[1, 5, 5, 2],
[9, -6, 2, 8],
[-3, 7, -9, 1]
],
[
[-1, 5, -5, 2],
[9, 6, 2, 8],
[3, 7, 9]
]
])
print(np.argmax(a, axis=0))
print(np.argmax(a, axis=1))
출력[0 1 1]
[1 1]
numpy 의 argmax 매개 변수 axis=0/1 개념
numpy 의 argmax 에 대해 서 는 줄 인지 열 검색 인지 기본 적 으로 기억 하지 못 하고 항상 헷 갈 려 서 매번 자 료 를 찾 아야 하 는데 오늘 갑자기 깨 달 았 습 니 다.
먼저 줄 을 서 라,왜 냐?
아래 목록 을 보면 알 수 있 습 니 다.
>>b=np.array([1, 2, 3, 4, 3, 2, 1])
>>np.argmax(b)
>>3
>>np.argmax(b, axis=0)
>>3
기본 axis=0,목록 은 하나의 차원 만 있 고 자 연 스 럽 게 한 줄 데이터 의 최대 색인 입 니 다.그러면 2 차원 벡터 에 대해 서 는 axis 가 좌표 축의 방향 이지 행렬 의 개념 이 아니 라 는 것 만 기억 해 야 한다.
Numpy 라 이브 러 리 에서:
축 은 1 차원 을 넘 는 배열 의 정의 속성 에 사용 되 고 2 차원 데 이 터 는 두 개의 축 을 가지 고 있 습 니 다.
0 축 은 줄 의 수직 을 따라 아래로 내 려 가 고,1 축 은 열의 방향 을 따라 수평 으로 뻗 는 다.간단하게 말하자면 axis=0 은 크로스(down)를 대표 하고 axis=1 은 크로스(across)를 대표 한다.
그래서 axis=0 은 열 찾기 를 대표 하고 axis=1 은 줄 찾기 를 대표 합 니 다.
>>a = np.array([[1, 5, 5, 2],
[9, 6, 2, 8],
[3, 7, 9, 1]])
>>np.argmax(a,axis=0)
>>array([1, 2, 2, 1], dtype=int64)
>>np.argmax(a,axis=1)
>>array([1, 0, 2], dtype=int64)
결론:argmax 는 최대 수의 색인 을 되 돌려 줍 니 다.argmax 에는 매개 변수 axis 가 있 습 니 다.기본 값 은 0 입 니 다.각 열의 최대 값 을 나타 내 는 색인 입 니 다.axis=1 은 각 줄 의 최대 값 을 나타 내 는 색인 입 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.