ホームページ > バックエンド開発 > Python チュートリアル > 数値リストの累計を効率的に計算するにはどうすればよいですか?

数値リストの累計を効率的に計算するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-08 08:49:10
オリジナル
990 人が閲覧しました

How Can I Efficiently Calculate the Cumulative Sum of a Numerical List?

リスト内の数値の累積和を効率的に計算する方法

数値データを処理する場合、多くの場合、次の累積和を計算する必要があります。リスト内の数字。ここでは、包括的なソリューションを提供し、リストの要素を手動で合計しようとしたユーザーによって引き起こされた問題に対処します。

たとえば、time_interval = [4, 6, 12] とすると、ユーザーは次のことを目的としています。 [4, 4 6, 4 6 12] を計算して累積和 t = [4, 10, 22].

手動アプローチ:

ユーザーは最初、リストを反復処理して合計を累積するという手動アプローチを試みました:

t1 = time_interval[0]
t2 = time_interval[1] + t1
t3 = time_interval[2] + t2
print(t1, t2, t3)  # -> 4 10 22
ログイン後にコピー

ただし、このアプローチには明示的な反復が必要であり、大規模な場合は退屈になる可能性があります。 lists.

Numpy の実装:

配列に対して数値演算を頻繁に実行する場合は、累積加算用の組み込み関数cumsum を提供する numpy が強く推奨されるライブラリです。 。 numpy を使用すると、累積合計を効率的に計算できます。

import numpy as np

a = [4, 6, 12]

np.cumsum(a)
#array([4, 10, 22])
ログイン後にコピー

パフォーマンスの比較:

Numpy は、多くの場合、このような数値演算では純粋な Python 実装よりも優れています。 numpy のcumsum とユーザーの手動累積関数 (accumu) を比較すると、その違いがわかります。

In [136]: timeit list(accumu(range(1000)))
10000 loops, best of 3: 161 us per loop

In [137]: timeit list(accumu(xrange(1000)))
10000 loops, best of 3: 147 us per loop

In [138]: timeit np.cumsum(np.arange(1000))
100000 loops, best of 3: 10.1 us per loop
ログイン後にコピー

numpy は依存関係を導入する可能性がありますが、同様の数値演算を頻繁に実行する場合、その効率性によりその使用が正当化される可能性があります。

以上が数値リストの累計を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート