Numpy

[Numpy] Reshape

ju_young 2021. 7. 16. 12:06
728x90
In [2]:
import numpy as np

 

In [4]:
test_matrix = [[1,2,3,4], [1,2,5,8]]
np.array(test_matrix).shape
Out[4]:
(2, 4)

 

In [5]:
np.array(test_matrix).reshape(2, 2, 2)
Out[5]:
array([[[1, 2],
        [3, 4]],

       [[1, 2],
        [5, 8]]])

 

In [7]:
test = np.array(test_matrix).reshape(8,)
test
Out[7]:
array([1, 2, 3, 4, 1, 2, 5, 8])

 

-1로 지정해주면 다른 열 또는 행을 기준으로 자동으로 맞춰준다. 예를 들어 다음과 같이 reshape(-1, 1)로 지정해주었다면 1열로 맞추고 행은 따라서 자동으로 맞춰진다.

In [9]:
test.reshape(-1, 1)
Out[9]:
array([[1],
       [2],
       [3],
       [4],
       [1],
       [2],
       [5],
       [8]])

 

In [11]:
np.array(test_matrix).reshape(2, 4).shape
Out[11]:
(2, 4)

 

In [13]:
np.array(test_matrix).reshape(2, -1).shape
Out[13]:
(2, 4)

 

In [15]:
np.array(test_matrix).reshape(2, 2, 2)
Out[15]:
array([[[1, 2],
        [3, 4]],

       [[1, 2],
        [5, 8]]])

 

In [17]:
np.array(test_matrix).reshape(2, 2, 2).shape
Out[17]:
(2, 2, 2)

 

Flatten은 n차원 행렬을 1차원 행렬로 바꿔주는 함수이다.

In [18]:
test_matrix = [[[1,2,3,4], [1,2,5,8]], [[1,2,3,4], [1,2,5,8]]]
np.array(test_matrix).flatten()
Out[18]:
array([1, 2, 3, 4, 1, 2, 5, 8, 1, 2, 3, 4, 1, 2, 5, 8])
728x90