1

ここに画像の説明を入力 上記の方程式があり、赤で下線が引かれた総和を計算したいのですが、[ρ0,ρ1,ρ2,...,ρN] は最初にリストです。

for ループは確実に問題を解決できます。しかし、もっと簡潔な pythonic スタイルがあるかどうか疑問に思っていました。reduce 関数を試してみましたが、リストの直接和または乗算でしか機能しないようです。上記のような合計に取り組む方法は何ですか?

4

3 に答える 3

3

あなたが探しているのは次のとおりだと思います:

sum((x-y)**2 for (x,y) in izip(a, a[1:]))

配列の場合a
を使用izip(a, a[1:])すると、配列の i 番目と i+1 番目の要素に同時にアクセスできます。

于 2015-03-06T15:34:51.447 に答える
1

おそらくこれを使用する方が良いでしょうnumpyが、純粋な python では、ジェネレーター式を合計できます。例えば

>>> sum(i**2 for i in range(10))
285

2 番目の用語については、合計をネストするだけです。

>>> sum(sum(i*j for i in range(10)) for j in range(10))
2025

ここで、私のi*j用語は、ロー差とコサイン項の積を計算するための関数です。

于 2015-03-06T15:33:17.137 に答える