区間内に3つの要素を合計する方法がありますか?たとえば:スライディングウインドウ内の要素の合計 - NumPy
import numpy as np
mydata = np.array([4, 2, 3, 8, -6, 10])
私はこの結果を取得したいと思い:
np.array([9, 13, 5, 12])
区間内に3つの要素を合計する方法がありますか?たとえば:スライディングウインドウ内の要素の合計 - NumPy
import numpy as np
mydata = np.array([4, 2, 3, 8, -6, 10])
私はこの結果を取得したいと思い:
np.array([9, 13, 5, 12])
我々はnp.convolve
使用することができます - convolution
との基本的な考え方は、我々は我々のカーネルを持っているということです
np.convolve(mydata,np.ones(3,dtype=int),'valid')
を入力配列をスライドさせ、畳み込み演算は、カーネルがスライドするときにカーネル要素で乗算された要素を合計します。したがって、ウィンドウサイズが3
の場合の問題を解決するために、np.ones(3)
で生成された3つの1s
というカーネルを使用しています。
サンプル実行 - しばらく時間がかかる場合があります `conv`を説明する
In [334]: mydata
Out[334]: array([ 4, 2, 3, 8, -6, 10])
In [335]: np.convolve(mydata,np.ones(3,dtype=int),'valid')
Out[335]: array([ 9, 13, 5, 12])
ああ、今私は理解している。提供されたデータに基づいて、np.convolve(mydata、[1,2]、 'valid')で試してみたところ、結果が[8,8,19,4 -4]でない理由を理解できませんでした。しかし、これはnp.convolve(mydata、[2,1]、 'valid')の出力です。すべて今すぐクリア:-) – Ohumeronen
@Ohumeronen。しかし、ポストに関連するコメントはほとんど加えられていない。 – Divakar
ありがとうございました。私はこの機能がかなり複雑であるように見えるが、私はそれについてのいくつかのドキュメントも読むだろう。再度、感謝します! – Ohumeronen