새소식

반응형
Library/NumPy

[NumPy] 넘파이 newaxis

  • -
반응형

넘파이 newaxis 


넘파이 newaxis는 넘파이 배열에 새로운 축(차원)을 추가하는 데 사용되는 데 사용되는 인덱싱 객체이다. 이는 배열의 차원을 늘리거나 형태를 변경하는 데 유용하다. 일반적으로 배열 슬라이싱에서 사용되며, 슬라이싱 결과에 새로운 축을 추가하려고 할 때 사용된다.

 

import numpy as np

# 1차원 배열
arr = np.array([1, 2, 3, 4])

# newaxis를 사용하여 1차원 배열을 2차원 배열로 변경
arr_2d = arr[:, np.newaxis]

print(arr_2d)

위의 예제 코드는 arr 배열이 세로 방향으로 새로운 축이 추가된 2차원 배열이 된다. newaxis는 배열의 차원을 조작하고 브로드캐스팅(Broadcasting)과 같은 작업을 수행할 때 유용하다.

  • : - 이 부분은 배열을 슬라이싱 한다. 여기서는 모든 행을 선택한다.
  • np.newaixs - 새로운 축(차원)을 추가한다.

결과적으로 arr[:, np.newaxis]는 원래 1차원 배열을 열 벡터로 표현한 2차원 배열을 생성한다. 새로운 축이 열 방향으로 추가되었기 때문에 열 벡터로 간주할 수 있다. 

[[1] 
 [2] 
 [3] 
 [4]]

실행 결과

 

 

2차원 배열을 3차원 배열로 변경

import numpy as np

# 2차원 배열 생성
arr_2d = np.array([[1, 2, 3],
                   [4, 5, 6]])

# arr_2d를 3차원 배열로 변경
arr_3d = arr_2d[:, :, np.newaxis]

# 결과 출력
print("Original 2D Array")
print(arr_2d)
print("\nConverted 3D Array")
print(arr_3d)

arr_2d[: , :, np.newaxis]를 사용하여 2차원 배열 arr_2d를 3차원 배열 arr_3d로 변경한다. 

Original 2D Array
[[1 2 3]
 [4 5 6]]

Converted 3D Array
[[[1]
  [2]
  [3]]

 [[4]
  [5]
  [6]]]

실행 환경

 

이렇게 각 행렬이 새로운 차원에 배치되어 3차원 배열이 생성된다. 이러한 변환은 데이터의 차원을 조작하거나 머신러닝에서 데이터를 처리할 때 유용할 수 있다.

 

다차원 배열에서 차원 추가

import numpy as np

# 2차원 배열
arr_2d = np.array([[1, 2, 3],
                   [4, 5, 6]])

# 2차원 배열에 새로운 차원 추가
arr_3d = arr_2d[:, :, np.newaxis]

print("Original 2D Array")
print(arr_2d)
print("\nConverted 3D Array")
print(arr_3d)

위의 예제 코드에서는 2차원 배열에 새로운 차원을 추가하여 3차원 배열로 변환하는 코드이다. 리스트 슬라이싱을 통해 1차원, 2차원 배열의 원소까지 가져온 후 3차원 위치에 np.newaxis를 사용하여 3차원 배열로 변환한다.

 

Original 2D Array
[[1 2 3]
 [4 5 6]]

Converted 3D Array
[[[1]
  [2]
  [3]]

 [[4]
  [5]
  [6]]]

실행 결과

 

 

벡터를 열 벡터 또는 행 벡터로 변환

import numpy as np

# 1차원 배열 (벡터)
arr = np.array([1, 2, 3])

# 열 벡터로 변환
arr_column = arr[:, np.newaxis]

# 행 벡터로 변환
arr_row = arr[np.newaxis, :]

print("Original Array")
print(arr)
print("\nColumn Vector")
print(arr_column)
print("\nRow Vector")
print(arr_row)

2차원 배열은 [행:열]과 같은 형식으로  이루어져 있다.

  • Original Array는 원래 1차원 배열이다.
  • Column Vector는 원래 배열을 열 벡터로 변환한 것이다. arr[:, np.newaxis]는 arr의 행을 1차원 벡터로 변환([1], [2], [3])한 다음, 이를 arr의 열로 추가한다. 이렇게 하면 arr의 행은 그대로 유지되고, 열이 하나 추가되어 열 벡터가 된다.
  • Row Vector는 원래 배열을 행 벡터로 변환한 것이다. arr[np.newaxis, :]는 arr의 열을 1차원 벡터로 변환([1,2,3])한 다음, 이를 arr의 행으로 추가한다. 이렇게 하면 arr의 열은 그대로 유지되고, 행이 하나 추가되어 행 벡터가 된다.

Tip

1차원 벡터로 변환한다는 것은, 배열의 차원을 1차원으로 줄이는 것을 의미한다. 

Original Array
[1 2 3]      

Column Vector
[[1]
 [2]
 [3]]        

Row Vector   
[[1 2 3]]

실행 결과

 

728x90
반응형

'Library > NumPy' 카테고리의 다른 글

[NumPy] 넘파이 squeeze() 함수  (0) 2023.11.29
[NumPy] 넘파이 배열(array)  (0) 2023.11.26
[NumPy] 넘파이 moveaxis() 함수  (0) 2023.11.25
[NumPy] 넘파이 swapaxes() 함수  (1) 2023.11.24
[NumPy] 넘파이 ravel() 함수  (0) 2023.11.23
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.