上記の方程式があり、赤で下線が引かれた総和を計算したいのですが、[ρ0,ρ1,ρ2,...,ρN] は最初にリストです。
for ループは確実に問題を解決できます。しかし、もっと簡潔な pythonic スタイルがあるかどうか疑問に思っていました。reduce 関数を試してみましたが、リストの直接和または乗算でしか機能しないようです。上記のような合計に取り組む方法は何ですか?
上記の方程式があり、赤で下線が引かれた総和を計算したいのですが、[ρ0,ρ1,ρ2,...,ρN] は最初にリストです。
for ループは確実に問題を解決できます。しかし、もっと簡潔な pythonic スタイルがあるかどうか疑問に思っていました。reduce 関数を試してみましたが、リストの直接和または乗算でしか機能しないようです。上記のような合計に取り組む方法は何ですか?
あなたが探しているのは次のとおりだと思います:
sum((x-y)**2 for (x,y) in izip(a, a[1:]))
配列の場合a
。
を使用izip(a, a[1:])
すると、配列の i 番目と i+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
用語は、ロー差とコサイン項の積を計算するための関数です。