넘파이 ravel() 함수
넘파이의 ravel() 함수는 다차원 배열을 1차원 배열로 변환하는 함수이다. 즉, 배열의 모든 요소를 1차원으로 나열하여 반환한다.
ravel() 함수의 목적은 다음과 같다.
- 다차원 배열을 1차원 배열로 변환하여 처리하기 쉽게 만들기
- 다차원 배열의 모든 요소를 순차적으로 처리하기
- 다차원 배열을 다른 함수의 인수로 전달하기
다음은 ravel() 함수를 사용하는 다양한 사례이다. 예제 코드를 살펴보며 어떻게 사용하는지 익혀보자.
다차원 배열을 1차원 배열로 변환하여 처리하기
실행 결과
다차원 배열을 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() - 복사본을 만들어야 하므로 상대적으로 느릴 수 있다.
두 함수는 대부분의 상황에서 비슷한 결과를 제공하지만, 필요에 따라 반환 값의 수정 여부나 메모리 사용량 등을 고려하여 선택할 수 있다.
읽어주셔서 감사합니다.