numpy의 배열에서 축은 어떻게 인덱싱됩니까?
Numpy의 튜토리얼에서 축은 다음과 같은 정수로 인덱싱될 수 있습니다.0열에 대한 것입니다.1행을 위한 것인데, 왜 이런 식으로 색인화되어 있는지 이해가 안 되나요?그리고 다차원 배열을 처리할 때 각 축의 인덱스를 어떻게 확인합니까?
정의에 따라 차원의 축 번호는 배열 내에서 해당 차원의 인덱스입니다.shape또한 인덱싱 중에 해당 차원에 액세스하는 데 사용되는 위치이기도 합니다.
예를 들어, 2D 배열이a모양(5,6)이 있으면 액세스할 수 있습니다.a[0,0]까지a[4,5]따라서 축 0은 첫 번째 차원("행")이고 축 1은 두 번째 차원("열")입니다."행"과 "열"이 정말로 의미가 없는 더 높은 차원에서는 관련된 모양과 색인의 관점에서 축을 생각해 보십시오.
네가 한다면..sum(axis=n)예를 들어, 차원n축소 및 삭제되며, 새 행렬의 각 값은 해당 축소된 값의 합과 같습니다.예를 들어, 만약b모양이 나다(5,6,7,8),당신은 그래요.c = b.sum(axis=2)축 2(크기 7인 축)가 접히고 결과가 모양을 갖습니다.(5,6,8).더 나아가,c[x,y,z]모든 원소의 합과 같음b[x,y,:,z].
만약 누군가가 이 시각적인 설명을 필요로 한다면,shape=(3,5)배열:
다음과 같은 방법으로 축을 잡을 수 있습니다.
>>> a = np.array([[[1,2,3],[2,2,3]],[[2,4,5],[1,3,6]],[[1,2,4],[2,3,4]],[[1,2,4],[1,2,6]]])
array([[[1, 2, 3],
[2, 2, 3]],
[[2, 4, 5],
[1, 3, 6]],
[[1, 2, 4],
[2, 3, 4]],
[[1, 2, 4],
[1, 2, 6]]])
>>> a.shape
(4,2,3)
다른 값을 사용하여 도형 배열을 만들었습니다.(4,2,3)구조를 명확하게 알 수 있도록 말입니다.다른 축은 다른 '층'을 의미합니다.
그것은,axis = 0형상의 첫 번째 차원을 색인화합니다.(4,2,3)첫 번째 어레이를 나타냅니다.[]4개의 요소가 들어 있으므로 모양은 4개입니다.
array[[1, 2, 3],
[2, 2, 3]],
array[[2, 4, 5],
[1, 3, 6]],
array[[1, 2, 4],
[2, 3, 4]],
array[[1, 2, 4],
[1, 2, 6]]
axis = 12차원의 형상을 지수화합니다.(4,2,3)계층의 각 배열에는 두 개의 요소가 있습니다.axis = 0,e.c. 의 배열에서.
array[[1, 2, 3],
[2, 2, 3]]
두 가지 요소는 다음과 같습니다.
array[1, 2, 3]
array[2, 2, 3]
그리고 세 번째 형상 값은 레이어의 각 배열 요소에 3개의 요소가 있다는 것을 의미합니다.axis = 2e.c. 3가지 요소가 있습니다.array[1, 2, 3]그것은 명백합니다.
또한 다음의 수를 통해 축/차원을 구분할 수 있습니다.[]처음이나 끝에이 경우 숫자는 3([[[)를 선택할 수 있습니다.axis부터axis = 0,axis = 1그리고.axis = 2.
일반적으로 축 = 0은 2차원 및 3차원의 각 값에 따라 달라지는 1차원의 모든 셀을 의미합니다.
예를 들어, 2차원 배열에는 두 개의 해당 축이 있습니다. 첫 번째 축은 행을 가로질러 수직으로 아래로 실행되고(축 0), 두 번째 축은 열을 가로질러 수평으로 실행됩니다(축 1).
3D의 경우 복잡해지므로 루프에 여러 개를 사용합니다.
>>> x = np.array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
>>> x.shape #(3, 3, 3)
#axis = 0
>>> for j in range(0, x.shape[1]):
for k in range(0, x.shape[2]):
print( "element = ", (j,k), " ", [ x[i,j,k] for i in range(0, x.shape[0]) ])
...
element = (0, 0) [0, 9, 18] #sum is 27
element = (0, 1) [1, 10, 19] #sum is 30
element = (0, 2) [2, 11, 20]
element = (1, 0) [3, 12, 21]
element = (1, 1) [4, 13, 22]
element = (1, 2) [5, 14, 23]
element = (2, 0) [6, 15, 24]
element = (2, 1) [7, 16, 25]
element = (2, 2) [8, 17, 26]
>>> x.sum(axis=0)
array([[27, 30, 33],
[36, 39, 42],
[45, 48, 51]])
#axis = 1
for i in range(0, x.shape[0]):
for k in range(0, x.shape[2]):
print( "element = ", (i,k), " ", [ x[i,j,k] for j in range(0, x.shape[1]) ])
element = (0, 0) [0, 3, 6] #sum is 9
element = (0, 1) [1, 4, 7]
element = (0, 2) [2, 5, 8]
element = (1, 0) [9, 12, 15]
element = (1, 1) [10, 13, 16]
element = (1, 2) [11, 14, 17]
element = (2, 0) [18, 21, 24]
element = (2, 1) [19, 22, 25]
element = (2, 2) [20, 23, 26]
# for sum, axis is the first keyword, so we may omit it,
>>> x.sum(0), x.sum(1), x.sum(2)
(array([[27, 30, 33],
[36, 39, 42],
[45, 48, 51]]),
array([[ 9, 12, 15],
[36, 39, 42],
[63, 66, 69]]),
array([[ 3, 12, 21],
[30, 39, 48],
[57, 66, 75]]))
언급URL : https://stackoverflow.com/questions/17079279/how-is-axis-indexed-in-numpys-array
'programing' 카테고리의 다른 글
| 패키지 사양의 절차 (0) | 2023.07.23 |
|---|---|
| 다중 변수가 없음이 아닌지 확인하는 가장 단순한 방법은 무엇입니까? (0) | 2023.07.23 |
| 장고에서 한 앱에서 다른 앱으로 외부 키. (0) | 2023.07.23 |
| SpringCloud Gateway - 수신 요청 URL 및 해당 경로 URI 기록 (0) | 2023.07.18 |
| Tensorflow - ValueError: NumPy 배열을 Tensor로 변환하지 못했습니다(지원되지 않는 개체 유형 플로트). (0) | 2023.07.18 |
