>백엔드 개발 >파이썬 튜토리얼 >NumPy에서 롤링 표준 편차를 효율적으로 계산하는 방법은 무엇입니까?

NumPy에서 롤링 표준 편차를 효율적으로 계산하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-27 16:17:02435검색

How to Efficiently Calculate Rolling Standard Deviations in NumPy?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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