NumPy에서 1D 배열에 대한 롤링 창 구현
1D 배열에 대한 롤링 창 작업을 효율적으로 수행해야 할 필요성은 데이터 분석 및 조작에서 자주 발생합니다. . 수치 연산을 위한 강력한 라이브러리인 NumPy는 이 작업에 대한 다양한 솔루션을 제공합니다.
예를 들어, 1D 값 목록에 대한 롤링 표준 편차를 계산하는 작업을 생각해 보세요. 질문에 제공된 것처럼 루프를 사용하는 기본 Python 구현은 대규모 데이터세트의 경우 계산 비용이 많이 들 수 있습니다.
NumPy 기반 솔루션
이 프로세스를 최적화하기 위해 NumPy는 다음을 제공합니다. 간결하고 효율적인 접근 방식:
<code class="python">import numpy as np def rolling_std(array, window): return np.std(np.lib.stride_tricks.as_strided(array, shape=array.shape[0] - window + 1, strides=(array.strides[0], array.strides[0])), 1)</code>
rolling_std 함수는 1D 배열과 원하는 창 크기 창이라는 두 가지 인수를 사용합니다.
NumPy의 as_strided 함수는 마치 배열의 뷰를 생성합니다. 효율적인 계산이 가능한 스트라이드를 사용하여 겹치는 창으로 분할되었습니다.
그런 다음 np.std 함수는 두 번째 차원을 따라 표준 편차를 계산하여 롤링 작업을 효과적으로 수행합니다.
사용법
입력 배열 관찰에 대한 이동 표준 편차를 계산하려면 다음을 호출하면 됩니다.
<code class="python">stdev = rolling_std(observations, window_size)</code>
이 솔루션은 성능이 뛰어나고 명시적 루프가 필요 없으며 다음을 완전히 활용합니다. 효율적인 배열 조작을 위한 NumPy의 기능.
위 내용은 NumPy에서 롤링 표준 편차를 효율적으로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!