2016-07-21 4 views
2

区間内に3つの要素を合計する方法がありますか?たとえば:スライディングウインドウ内の要素の合計 - NumPy

import numpy as np 
mydata = np.array([4, 2, 3, 8, -6, 10]) 

私はこの結果を取得したいと思い:

np.array([9, 13, 5, 12]) 
+1

@Ohumeronen。しかし、ポストに関連するコメントはほとんど加えられていない。 – Divakar

+0

ありがとうございました。私はこの機能がかなり複雑であるように見えるが、私はそれについてのいくつかのドキュメントも読むだろう。再度、感謝します! – Ohumeronen

答えて

8

我々は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]) 
+0

ああ、今私は理解している。提供されたデータに基づいて、np.convolve(mydata、[1,2]、 'valid')で試してみたところ、結果が[8,8,19,4 -4]でない理由を理解できませんでした。しかし、これはnp.convolve(mydata、[2,1]、 'valid')の出力です。すべて今すぐクリア:-) – Ohumeronen

関連する問題