Python Numpy 강좌 : 제 9강 - 차원 확장 및 축소
축 추가
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr)
print(arr[np.newaxis])
print(arr[:, np.newaxis])
- 결과
- [1 2 3 4]
[[1 2 3 4]]
[[1]
[2]
[3]
[4]]
index
중 np.newaxis
를 이용하여 차원을 확장할 수 있습니다.
행
부분에 np.newaxis
를 입력시, 차원을 한 단계 추가합니다.
열
부분에 np.newaxis
를 입력시, 차원을 분해한 후 한 단계 추가합니다.
import numpy as np
arr = np.array([[1, 2],
[3, 4]], dtype=int)
new_arr = arr[:, np.newaxis]
print(arr)
print(new_arr)
print(new_arr[1][0])
print(new_arr[1][0][1])
- 결과
- [[1 2]
[3 4]]
[[[1 2]]
[[3 4]]]
[3 4]
4
배열[:, :, :, ... , np.newaxis]
를 이용하여 차원을 확장시킬 수 있습니다.
차원이 증가함에 따라 index
의 표시법이 같이 증가합니다.
주로, 슬라이싱를 통한 연산에 사용됩니다.
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])
print(arr1[np.newaxis] * arr2)
print(arr1[:, np.newaxis] * arr2)
print("\n")
print(arr1[np.newaxis] + arr2)
print(arr1[:, np.newaxis] + arr2)
- 결과
- [[1 4 9]]
[[1 2 3]
[2 4 6]
[3 6 9]]
[[2 4 6]]
[[2 3 4]
[3 4 5]
1[4 5 6]]
차원을 어떻게 나누느냐에 따라, 결과가 상이하게 달라집니다.
주로, 배열[:, np.newaxis]
형태로 계산을 진행합니다.
차원 확장 및 축소
import numpy as np
arr = np.array([[1], [2], [3]])
expansion = np.expand_dims(arr, axis=0)
reduction = np.squeeze(arr, axis=1)
print(arr)
print(expansion)
print(reduction)
- 결과
- [[1]
[2]
[3]]
[[[1]
[2]
[3]]]
[1 2 3]
Numpy
함수를 통해서도 차원을 확장하거나 축소할 수 있습니다.
차원을 확장하는 경우, 지정된 축을 대상으로 차원을 확장합니다.
np.expand_dims(배열, 축)
을 통해 지정된 축의 차원을 확장할 수 있습니다.
차원을 축소하는 경우, 지정된 축을 대상으로 차원을 축소합니다.
np.squeeze(배열, 축)
을 통해 지정된 축의 차원을 축소할 수 있습니다.
만약, 차원 축소 함수에 축을 입력하지 않으면, 1차원 배열
로 축소합니다.
import numpy as np
arr = np.array([
[
[1, 2],
[3, 4]
],
[
[5, 6],
[7, 8]
]
])
expand_dims = np.reshape(arr, (1, 1, 2, 4))
reduction = np.reshape(arr, (4, -1))
print(arr)
print(expand_dims)
print(reduction)
- 결과
- [[[1 2]
[3 4]]
[[5 6]
[7 8]]]
[[[[1 2 3 4]
[5 6 7 8]]]]
[[1 2]
[3 4]
[5 6]
[7 8]]
만약, 임의의 차원으로 변경하는 경우, reshape
를 통해 명시적으로 차원의 형태를 변경할 수 있습니다.
동일 차원을 사용하더라도, reshape
함수의 요소값으로 형태를 변경할 수 있습니다.
reshape 함수는 브로드캐스팅(Broadcasting)
조건을 만족해야 사용할 수 있습니다.
공유하기


댓글 남기기