달나라 노트

Python numpy : reshape (array의 구조 변경, array의 차원 변경) 본문

Python/Python numpy

Python numpy : reshape (array의 구조 변경, array의 차원 변경)

CosmosProject 2021. 8. 6. 01:58
728x90
반응형

 

 

 

array에 10이라는 숫자만 전달하면 위처럼 그냥 숫자데이터가 나옵니다.

별도로 

import numpy as np

arr_test = np.array(10)
print(arr_test)


-- Result
10

 

 

이것을 1행 1열의 데이터로 바꾸고싶으면 어떻게할까요.

이때 reshape method를 사용할 수 있습니다.

import numpy as np

arr_test = np.array(10)
print(arr_test)

arr_test = arr_test.reshape(1, 1)
print(arr_test)


-- Result
10
[[10]]

위처럼 reshape을 사용하면 [[10]] 처럼 1행 1열의 데이터로 변환되었습니다.

 

- reshape(1, 1)

1 by 1(1 x 1) 데이터로 변환하라는 의미

 

 

 

 

 

import numpy as np

arr_test = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print(arr_test)

arr_test = arr_test.reshape(4, 3)
print(arr_test)


-- Result
[ 1  2  3  4  5  6  7  8  9 10 11 12]

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

1부터 12까지의 정수로 이뤄진 1차원 array를 reshape으로 형태 변경을 해보았습니다.

 

reshape(4, 3)인 것으로 보아 4 by 3(4 x 3)의 array로 변환한다는 것으로 예측할 수 있습니다.

reshape(4, 3) -> 하나의 내부 list에 3개 데이터가 있고 총 4개의 내부 list가 있도록 변환

 

reshape(4, 3)은 4와 3의 2개의 인자를 가지고있습니다.

따라서 return되는 array도 2차원 데이터가 됩니다.

 

 

 

 

 

 

 

 

import numpy as np

arr_test = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24])
print(arr_test)

arr_test = arr_test.reshape(2, 3, 4)
print(arr_test)


-- Result
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]

[[[ 1  2  3  4]
  [ 5  6  7  8]
  [ 9 10 11 12]]

 [[13 14 15 16]
  [17 18 19 20]
  [21 22 23 24]]]

reshape은 위처럼 여러 인자를 줄 수 있습니다.

2, 3, 4 총 3개의 인자가 reshape에 들어갔으므로 return되는 array는 3차원이 됩니다.

 

 

 

 

 

import numpy as np

arr_test = np.array(
    [[ 1,  2,  3],
     [ 4,  5,  6],
     [ 7,  8,  9],
     [10, 11, 12]]
 )

print(arr_test)

arr_reshaped = arr_test.reshape(3, 4)
print(arr_reshaped)


-- Result
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
 
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

reshape method는 단순히 1차원 array를 다차원으로 바꾸는 것 뿐 아니라 위 예시처럼 다차원 array를 또 다른 모양의 다차원 array로 바꿀 수 있습니다.

 

위 예시는 4행 3열의 array를 4행 3열의 array로 바꾼 것입니다.

 

위 예시로부터 array의 작용 과정을 이해하기 쉽게 알아보면 다음과 같습니다.

1. reshape method가 적용된 array 속에 존재하는 모든 요소들을 순서대로 1차원 array로 만든다.

2. 이렇게 만든 1차원 array를 reshape할 모양의 array에 순서대로 채워넣는다.

 

즉, 기존 array가 몇차원이건 상관없이 그냥 기존 array의 모든 요소들을 순서대로 가져와서 새로운 모양의 array로 재구성한다고 보면 됩니다.

 

 

 

 

 

 

- 참고

중요한 내용은 아닙니다만 아래 예시처럼 reshape의 parameter로서 tuple의 형태로 전달할 수 있습니다.

tuple로 전달하건 지금까지 봤던 예시처럼 3, 4 형태로만 전달하건 결과는 동일합니다.

import numpy as np

arr_test = np.array(
    [[ 1,  2,  3],
     [ 4,  5,  6],
     [ 7,  8,  9],
     [10, 11, 12]]
 )

print(arr_test)

arr_reshaped = arr_test.reshape((3, 4))
print(arr_reshaped)


-- Result
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
 
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]

 

 

 

 

 

 

728x90
반응형
Comments