새소식

반응형
Library/NumPy

[NumPy] 넘파이 ravel() 함수

  • -
반응형

넘파이 ravel() 함수


넘파이의 ravel() 함수는 다차원 배열을 1차원 배열로 변환하는 함수이다. 즉, 배열의 모든 요소를 1차원으로 나열하여 반환한다. 
 
ravel() 함수의 목적은 다음과 같다.

  • 다차원 배열을 1차원 배열로 변환하여 처리하기 쉽게 만들기
  • 다차원 배열의 모든 요소를 순차적으로 처리하기
  • 다차원 배열을 다른 함수의 인수로 전달하기

다음은 ravel() 함수를 사용하는 다양한 사례이다. 예제 코드를 살펴보며 어떻게 사용하는지 익혀보자.
 

다차원 배열을 1차원 배열로 변환하여 처리하기

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

arr_ravel = np.ravel(arr)

print(arr_ravel)
[1 2 3 4 5 6]

실행 결과

 
다차원 배열을 1차원 배열로 변환하면 처리하기가 훨씬 쉬워진다. 예를 들어 위와 같이 2차원 배열이 있다고 가정했을 때, ravel() 함수를 사용하여 1차원 배열로 변경할 수 있다. 이렇게 하면 배열의 모든 요소를 순차적으로 처리하기 수월해진다.
 

결론적으로 reval() 함수는 n차원(n > 1) 배열을 1차원 배열로 변경하는 함수이다. 

 
우리는 지금까지 ravel() 함수는 다차원 배열로 1차원 배열로 변환하는 함수라고 배웠다, flatten()  함수도 다차원 배열에서 1차원 배열로 변경하는 함수 아닌가? 그럼 이 둘은 무슨 차이가 있는 건가?
 

ravel() 함수와 flatten() 함수의 차이

넘파이의 ravel() 함수와 flatten() 함수는 모두 다차원 배열을 1차원 배열로 변경하는 공통점이 있지만 두 함수는 아래와 같은 차이점이 있다.
 

  • 반환 값의 타입
    • ravel() - 원본 배열의 뷰(View)를 반환한다. 즉, 반환된 배열의 수정은 원본 배열에 영향을 미친다.
    • flatten() - 새로운 복사본을 반환한다. 반환된 배열의 수정은 원본 배열에 영향을 미치지 않는다.
  • 메모리 사용
    • ravel() - 뷰(View)를 반환하므로 메모리를 절약할 수 있다.
    • flatten() - 새로운 복사본을 만들기 때문에 메모리 사용량이 더 많을 수 있다.
  • 성능
    • ravel() - 원본 배열의 뷰(View)를 반환하므로 빠르게 실행된다.
    • flatten() - 복사본을 만들어야 하므로 상대적으로 느릴 수 있다.

두 함수는 대부분의 상황에서 비슷한 결과를 제공하지만, 필요에 따라 반환 값의 수정 여부나 메모리 사용량 등을 고려하여 선택할 수 있다.
 
 
읽어주셔서 감사합니다.
 

728x90
반응형

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

[NumPy] 넘파이 moveaxis() 함수  (0) 2023.11.25
[NumPy] 넘파이 swapaxes() 함수  (1) 2023.11.24
[NumPy] 넘파이 transpose() 함수  (1) 2023.11.22
[NumPy] 넘파이 flatten() 함수  (0) 2023.11.21
[NumPy] 넘파이 resize() 함수  (0) 2023.11.19
Contents

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

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