>백엔드 개발 >파이썬 튜토리얼 >## Flatten vs. Ravel: 각 NumPy 함수를 언제 사용해야 하며 그 이유는 무엇입니까?

## Flatten vs. Ravel: 각 NumPy 함수를 언제 사용해야 하며 그 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 23:14:301084검색

## Flatten vs. Ravel: When to Use Each NumPy Function and Why?

NumPy에서 Flatten 및 Ravel 함수 설명

수치 연산을 위한 강력한 Python 라이브러리인 NumPy는 겉보기에는 비슷해 보이는 두 가지 기능, 즉 flatten 및 Ravel을 제공합니다. 얽힘. 둘 다 다차원 배열을 1차원 배열로 변환하는 것을 목표로 합니다. 그러나 둘 사이에는 미묘한 차이가 있습니다.

Flaten과 Ravel의 동작

다음 NumPy 배열을 고려하세요.

<code class="python">import numpy as np
y = np.array(((1,2,3),(4,5,6),(7,8,9)))</code>

Flatten 기능 적용 결과는 다음과 같습니다.

<code class="python">print(y.flatten())
[1   2   3   4   5   6   7   8   9]</code>

마찬가지로 ravel 함수는 동일한 출력을 생성합니다.

<code class="python">print(y.ravel())
[1   2   3   4   5   6   7   8   9]</code>

주요 차이점

두 함수 모두 동일하게 반환합니다. 1차원 배열의 경우 기본 동작에 결정적인 차이가 있습니다.

  • 메모리 복사와 보기: Flatten은 항상 원본 배열의 복사본을 생성하여 뚜렷이 구분되는 데이터를 생성합니다. 구조. 대조적으로, ravel은 기본적으로 동일한 기본 데이터를 공유하는 원본 배열의 보기를 제공합니다. 이러한 차이는 출력 배열을 수정할 때 더욱 분명해집니다. flatten에서 반환된 배열을 변경해도 원본에는 영향을 미치지 않지만, ravel 출력을 수정하면 원본 배열이 변경될 수 있습니다.
  • 성능 고려 사항: Ravel은 일반적으로 flatten보다 빠릅니다. 새로운 메모리 사본을 생성할 필요가 없습니다. 그러나 ravel이 반환한 배열을 수정할 때는 변경 사항이 원본에 의도치 않게 영향을 미칠 수 있으므로 주의해야 합니다.
  • 특수 사례: flatten 또는 ravel 대신 (-1, )는 특정 시나리오에서 인수로 사용될 수 있습니다. 결과 배열이 연속적이지 않더라도 보폭이 허용되면 배열의 뷰를 생성하려고 노력합니다.

요약

Flatten과 Ravel은 둘 다입니다. 다차원 NumPy 배열을 1차원으로 평면화하는 데 사용됩니다. Flatten은 메모리 사본을 생성하고 Ravel은 뷰를 제공합니다. Ravel은 더 빠르지만 특히 성능을 최적화할 때 수정에 대해 신중한 고려가 필요합니다. Reshape((-1,))는 특정한 경우에 메모리 사용량과 성능을 최적화하는 데 사용될 수 있습니다.

위 내용은 ## Flatten vs. Ravel: 각 NumPy 함수를 언제 사용해야 하며 그 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.