달나라 노트

Python numpy : T (numpy array transpose, array 행/열 바꾸기) 본문

Python/Python numpy

Python numpy : T (numpy array transpose, array 행/열 바꾸기)

CosmosProject 2021. 12. 27. 12:05
728x90
반응형

 

 

numpy에서 T attribute는 numpy array를 transpose해줍니다.

좀 직관적으로 이해하려면 흔히 말하는 행과 열을 바꿔준다는 느낌으로 받아들이면 될 것 같습니다.

 

아래 예시를 봅시다.

 

import numpy as np


arr_test = np.array(
    [  # 1차 array
        [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]  # 2차 array
    ]
)
print(arr_test)
print(arr_test.shape)

arr_test_t = arr_test.T
print(arr_test_t)
print(arr_test_t.shape)


-- Result
[[1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]]
(3, 5)

[[1 1 1]
 [2 2 2]
 [3 3 3]
 [4 4 4]
 [5 5 5]]
(5, 3)

원래 arr_test는 [1, 2, 3, 4, 5]가 총 3개 있는 2차 array입니다.

즉, 3개의 행이 있으며, 5개의 열이 있는 형태라는 것이죠.

 

이것에 T(transpose) attribute를 적용한 결과를 보면

총 행과 열이 바뀌어서 5행, 3열의 형태가 되었습니다.

 

그래서 transpose 전/후의 shape의 결과를 보면 각각 (3, 5) / (5, 3)으로 transpose 전, 후에 행/열이 바뀌므로

transpose의 결과도 반전되었음을 알 수 있습니다.

 

 

 

 

 

이것을 DataFrame으로 바꿔서 좀 더 직관적으로 알아봅시다.

import numpy as np
import pandas as pd


arr_test = np.array(
    [  # 1차 array
        [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]  # 2차 array
    ]
)

df_arr_test = pd.DataFrame(arr_test)
print(df_arr_test)

arr_test_t = arr_test.T
df_arr_test_t = pd.DataFrame(arr_test_t)
print(df_arr_test_t)


-- Result
   0  1  2  3  4
0  1  2  3  4  5
1  1  2  3  4  5
2  1  2  3  4  5

   0  1  2
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4
4  5  5  5

pandas의 DataFrame으로 바꿔서 보니 행/열이 바뀐다는 것이 어떤 형태인지 좀 더 보기 쉬울겁니다.

 

 

 

 

 

 

import numpy as np


arr_test = np.array(
    [  # 1차 array
        [  # 2차 array
            [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]  # 3차 array
        ],
        [  # 2차 array
            [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]  # 3차 array
        ],
    ]
)
print(arr_test)
print(arr_test.shape)

arr_test_t = arr_test.T
print(arr_test_t)
print(arr_test_t.shape)



-- Result
[[[1 2 3 4 5]
  [1 2 3 4 5]
  [1 2 3 4 5]]

 [[1 2 3 4 5]
  [1 2 3 4 5]
  [1 2 3 4 5]]]
(2, 3, 5)

[[[1 1]
  [1 1]
  [1 1]]

 [[2 2]
  [2 2]
  [2 2]]

 [[3 3]
  [3 3]
  [3 3]]

 [[4 4]
  [4 4]
  [4 4]]

 [[5 5]
  [5 5]
  [5 5]]]
(5, 3, 2)

T attribute는 3차원 배열에도 사용할 수 있습니다.

그 결과는 위와 같습니다.

3차원 배열부터는 단순히 행/열을 바꿔준다는 개념으로 이해하기가 쉽지는 않기 때문에 위처럼 변경이 된다 라고 알고 있으면 될 것 같습니다.

 

또한 transpose 전/후의 shape 결과를 보면 shape의 결과가 반전되었음을 볼 수 있습니다.

(2, 3, 5) <-> (5, 3, 2)

 

 

 

 

 

 

 

 

728x90
반응형
Comments