programing

numpy의 배열에서 축은 어떻게 인덱싱됩니까?

subpage 2023. 7. 23. 14:15
반응형

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)배열:

Numpy array axis 0 and 1

다음과 같은 방법으로 축을 잡을 수 있습니다.

>>> 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

반응형