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 |