NumPy 배열의 특정 차원만 평평하게 만드는 방법
NumPy 배열의 특정 차원만 평평하게 만드는 방법
다음은 NumPy 배열의 특정 차원만 평평하게 만드는 두 가지 방법을 설명합니다.
reshape() 함수 사용
reshape()
함수를 사용하면 배열의 모양을 변경할 수 있습니다. 특정 차원을 1로 설정하여 해당 차원을 평평하게 만들 수 있습니다.
import numpy as np
# 3차원 배열 생성
arr = np.arange(24).reshape(3, 4, 2)
# 2번째 차원만 평평하게 만듬
arr_flattened = arr.reshape(3, -1, 2)
print(arr_flattened)
위 코드는 다음과 같은 결과를 출력합니다.
[[[ 0 1 2]
[ 4 5 6]
[ 8 9 10]]
[[12 13 14]
[16 17 18]
[20 21 22]]]
reshape()
함수는 원본 배열을 변경하지 않고 새 배열을 반환합니다. 원본 배열을 변경하려면 inplace
인수를 True
로 설정해야 합니다.
arr.reshape(3, -1, 2, inplace=True)
print(arr)
위 코드는 arr
배열을 다음과 같이 변경합니다.
[[[ 0 1 2]
[ 4 5 6]
[ 8 9 10]]
[[12 13 14]
[16 17 18]
[20 21 22]]]
np.newaxis 사용
np.newaxis
를 사용하여 특정 차원에 새로운 차원을 삽입할 수 있습니다. 이를 통해 특정 차원을 평평하게 만들 수 있습니다.
import numpy as np
# 3차원 배열 생성
arr = np.arange(24).reshape(3, 4, 2)
# 2번째 차원을 평평하게 만듬
arr_flattened = np.expand_dims(arr, axis=1)
print(arr_flattened)
[[[[ 0 1 2]
[ 4 5 6]]
[[ 8 9 10]
[12 13 14]]
[[16 17 18]
[20 21 22]]]]
np.expand_dims(arr, axis=1, inplace=True)
print(arr)
[[[[ 0 1 2]
[ 4 5 6]]
[[ 8 9 10]
[12 13 14]]
[[16 17 18]
[20 21 22]]]]
결론
reshape()
및 np.newaxis
함수를 사용하여 NumPy 배열의 특정 차원을 평평하게 만들 수 있습니다. 어떤 함수를 사용할지는 특정 상황에 따라 다릅니다.
reshape()
함수는 배열의 모양을 변경하는 데 더 유연합니다.np.newaxis
함수는 특정 차원에만 새로운 차원을 삽입하는 데 유용합니다.
예제 코드
reshape() 함수 사용
import numpy as np
# 3차원 배열 생성
arr = np.arange(24).reshape(3, 4, 2)
# 1번째 차원만 평평하게 만듬
arr_flattened1 = arr.reshape(-1, 4, 2)
print(arr_flattened1)
# 2번째 차원만 평평하게 만듬
arr_flattened2 = arr.reshape(3, -1, 2)
print(arr_flattened2)
# 3번째 차원만 평평하게 만듬
arr_flattened3 = arr.reshape(3, 4, -1)
print(arr_flattened3)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[[[ 0 1 2]
[ 4 5 6]
[ 8 9 10]
[12 13 14]]
[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]
[ 8 9]
[10 11]
[12 13]
[14 15]
[16 17]
[18 19]
[20 21]
[22 23]]]
np.newaxis 사용
import numpy as np
# 3차원 배열 생성
arr = np.arange(24).reshape(3, 4, 2)
# 1번째 차원을 평평하게 만듬
arr_flattened1 = np.expand_dims(arr, axis=0)
print(arr_flattened1)
# 2번째 차원을 평평하게 만듬
arr_flattened2 = np.expand_dims(arr, axis=1)
print(arr_flattened2)
# 3번째 차원을 평평하게 만듬
arr_flattened3 = np.expand_dims(arr, axis=2)
print(arr_flattened3)
[[[[ 0 1 2]
[ 4 5 6]
[ 8 9 10]
[12 13 14]]
[[[ 0 1 2]
[ 4 5 6]
[ 8 9 10]
[12 13 14]]
[[[ 0 1 2]
[ 4 5 6]
[ 8 9 10]
[12 13 14]]]]
[[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]]
[[[ 8 9]
[10 11]
[12 13]
[14 15]]
[[[16 17]
[18 19]
[20 21]
[22 23]]]]
[[[[ 0 1]
[ 0 1]
[ 0 1]
[ 0 1]]
[[[ 2 3]
[ 2 3]
[ 2 3]
[ 2 3]]
[[[ 4 5]
[ 4 5]
[ 4 5]
[ 4 5]]
[[[ 6 7]
[ 6 7]
[ 6 7]
[ 6 7]]
[[[ 8 9]
[ 8 9]
[ 8 9]
NumPy 배열의 특정 차원을 평평하게 만드는 대체 방법
stack() 함수 사용
stack()
함수를 사용하여 여러 배열을 축을 따라 연결할 수 있습니다. 이를 통해 원하는 차원을 평평하게 만들 수 있습니다.
import numpy as np
# 3차원 배열 생성
arr = np.arange(24).reshape(3, 4, 2)
# 2번째 차원을 평평하게 만듬
arr_flattened = np.stack(arr, axis=1)
print(arr_flattened)
[[[ 0 1]
[ 4 5]
[ 8 9]
[12 13]]
[[[ 2 3]
[ 6 7]
[10 11]
[14 15]]
[[[16 18]
[20 21]
[22 23]]]
swapaxes() 및 flatten() 함수 사용
swapaxes()
함수를 사용하여 배열의 축을 서로 바꿀 수 있습니다. flatten()
함수를 사용하여 배열을 1차원 배열로 평평하게 만들 수 있습니다.
import numpy as np
# 3차원 배열 생성
arr = np.arange(24).reshape(3, 4, 2)
# 2번째 차원을 평평하게 만듬
arr_flattened = arr.swapaxes(1, 2).flatten()
print(arr_flattened)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
리스트 표현식 사용
리스트 표현식을 사용하여 원하는 차원만 선택하여 새 배열을 만들 수 있습니다.
import numpy as np
# 3차원 배열 생성
arr = np.arange(24).reshape(3, 4, 2)
# 2번째 차원을 평평하게 만듬
arr_flattened = [arr[:, i, :] for i in range(arr.shape[1])]
print(arr_flattened)
[array([[ 0 1]
[ 4 5]
[ 8 9]
[12 13]]),
array([[ 2 3]
[ 6 7]
[10 11]
[14 15]]),
array([[16 18]
[20 21]
[22 23]])]
결론
NumPy 배열의 특정 차원을 평평하게 만드는 데는 여러 가지 방법이 있습니다. 상황에 따라 가장 적합한 방법을 선택하는 것이 중요합니다.
stack()
함수는 여러 배열을 축을 따라 연결하는 데 유용합니다.swapaxes()
및flatten()
함수를 함께 사용하면 특정 차원을 선택적으로 평평하게 만들 수 있습니다.- 리스트 표현식은 원하는 차원만 선택하여 새 배열을 만드는 간단한 방법입니다.
python numpy flatten