넘파이 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() - 복사본을 만들어야 하므로 상대적으로 느릴 수 있다.
두 함수는 대부분의 상황에서 비슷한 결과를 제공하지만, 필요에 따라 반환 값의 수정 여부나 메모리 사용량 등을 고려하여 선택할 수 있다.
읽어주셔서 감사합니다.