티스토리 뷰

반응형

이번 포스팅은 numpy의 Shape 다루기를 정리해보겠습니다.

머신러닝에서 행렬의 차원을 shape라는 개념으로 표현합니다. 

numpy에서도 차원을 다루기 위한 방법으로 shape을 제공하는데 어떻게 사용하는지 알아보겠습니다.

 

1. Shape

머신러닝에서 행렬의 차원을 shape라는 개념으로 표현합니다.

 

위와 같은 행렬이 있다고 한다면 1차원에 4, 2차원에 2로 (4,2)로 표현합니다.

그래서 앞으로 나오는 reshape에서 변수로 받는 부분은 차원을 의미합니다.

 

2. numpy Shape 다뤄보기.

2-1 reshape

reshape 기능은 배열의 차원의 크기를 변경하는 방법입니다.

배열의 요소의 개수는 동일하며 차원만 조정합니다.

 

예를 들면 (2,4) 차원의 배열을 reshape 기능을 통해 (8,) 차원으로 변경이 가능합니다.

배열의 사이즈만 같다면 다차원으로 자유롭게 변형이 가능합니다.

import numpy as np;

test_array = [[1,2,3,4],[1,2,3,4]];

가장 먼저 numpy를 import 하고 테스트 배열을 만들어 줍니다.

test_matrix = np.array(test_array);
test_matrix.shape;

-- 출력 --
(2,4)

- np.array를 생성 한 뒤 shape 하면 해당 차원이 몇 차원인지 표시해줍니다.

test_matrix = np.array(test_array).reshape(8,);
test_matrix

-- 출력 --
array([1, 2, 3, 4, 1, 2, 3, 4])

- 만들어진 행렬을 reshape을 하면 차원을 변경할 수 있습니다.

test_matrix = np.array(test_array).reshape(2,2,2);
test_matrix
     (adsbygoogle = window.adsbygoogle || []).push({});
-- 출력 -- array([[[1, 2], [3, 4]], [[1, 2], [3, 4]]])

위와 같이 3차원으로도 변경이 가능합니다.

test_matrix = np.array(test_array).reshape(-1,2);
test_matrix

-- 출력 --
array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])

-1은 size를 기반으로 row 개수를 선정하는 옵션입니다. 

 

2-2 flatten 

 

flatten은 배열을 1차원 형태의 배열로 변환해주는 명령어입니다.

1차원 형태의 배열이 필요하다면 reshape 보다 간편하게 flatten만 사용하여 배열을 만들어 줄 수 있습니다.

 

test_matrix = np.array(test_array).flatten()
test_matrix

-- 출력 -- 
array([1, 2, 3, 4, 1, 2, 3, 4])

 

참고

https://www.youtube.com/watch?v=yHD1ApkUWRQ&t=4s

반응형
댓글