새소식

반응형
Library/NumPy

[NumPy] 넘파이 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
반응형

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

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