Python/Numpy

[Numpy] Numpy Shape Manipulation

데이터 세상 2021. 3. 5. 01:01
728x90
반응형

flatten()

  • n차원의 ndarray를 1차원으로 변형

import numpy as np

arr = np.zeros((3,2))
print(arr)

arr = arr.flatten()
print(arr)

>>
[[0. 0.]
 [0. 0.]
 [0. 0.]]
[0. 0. 0. 0. 0. 0.]

 

reshape()

  • np.reshape(arr, shape)
  • arr.reshape(shape)
  • 배열 재형성, 이미 존재하는 ndarray를 원하는 shape로 변형하는 함수
  • order: {'C', 'F', 'A'}
    • 'C': C언어의 인덱스 규칙
    • 'F': Fortran의 인덱스 규칙으로 읽고 쓰기 옵션
  • -1을 사용하면 shape를 명시하지 않아도 자동으로 채워줌(단, 1개의 차원이 남아 있는 경우만 가능)
    • -1이 전달된 차원은 남은 차원의 정보로 계산하겠다는 의미
    • -1을 사용할 때도 변환 전과 후의 원소의 갯수가 일치해야 함
import numpy as np

arr = np.arange(12)
print(arr)
arr = arr.reshape(3,4)
print(arr)
>>
[ 0  1  2  3  4  5  6  7  8  9 10 11]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 
 
arr = np.arange(20)
arr = arr.reshape(-1, 10)
print(arr)
arr = arr.reshape(5, -1)
print(arr)
>>
[[ 0  1  2  3  4  5  6  7  8  9]
 [10 11 12 13 14 15 16 17 18 19]]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]]

 

Transpose

  • np.transpose(arr, axis)
  • arr.transpose(axis)
  • 다차원 배열의 전치를 수행
  • axis를 지정하지 않으면
    • arr.shape = (i[0], i[1], ... , i[n-1])
    • arr.transpose().shape = (i[n-1], i[n-2], ... , i[0])

import numpy as np

arr = np.arange(20).reshape(4,5)
print(arr)
arr = arr.transpose()
print(arr.shape)
print(arr)

>>
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
(5, 4)
[[ 0  5 10 15]
 [ 1  6 11 16]
 [ 2  7 12 17]
 [ 3  8 13 18]
 [ 4  9 14 19]]


arr = np.arang(30).reshape(3,2,5)
print(arr.shape)
print(arr.transpose().shape)
>>
(3, 2, 5)
(5, 2, 3)

 

T

  • transpose와 같은 역할을 수행하는 ndarray의 attribute
  • axis를 지정할 수 없음
import numpy as np

x = np.arange(24).reshape((-1,3,4))
print(x.shape)
print(x)
>>
(2, 3, 4)
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]
 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
  
  
print(x.T.shape)
print(x.T)
>>
(4, 3, 2)
[[[ 0 12]
  [ 4 16]
  [ 8 20]]

 [[ 1 13]
  [ 5 17]
  [ 9 21]]

 [[ 2 14]
  [ 6 18]
  [10 22]]

 [[ 3 15]
  [ 7 19]
  [11 23]]]
728x90
반응형

'Python > Numpy' 카테고리의 다른 글

[Numpy] Numpy Functions  (1) 2021.03.05
[Numpy] Numpy Vectorization & Broadcasting  (0) 2021.03.05
[Numpy] Numpy (Numerical Python)  (0) 2021.02.24