編集1:私が最初の答えを与えた後、OPは彼の質問を更新しました。更新された答えはEDIT2の後にあります。
ないあなたがやろうが、この場合、あなたは、単にdiff
を得るために、次の操作を行うことができ、正確に何をしてください:
import numpy as np
diff = np.array(array[n-1:]) - np.array(average[:-n+2])
その後diff
が所望の出力となります。
array([ 2. , 1.5, 10.5, 4. , 1.5, -2. ])
したがって、最初にパラメータn
を使用してリストをスライスし、次にリストを配列に変換し、それらを互いに引き算します。上記のコード行は、a)リストの長さが同じ場合、b)n
がインデックスであり、開始する要素ではない、c)リストの代わりにnumpy配列を使用した場合:
import numpy as np
# add one additional value so that the arrays have the same length
myArray = np.array([1, 3, 4, 5, 15, 14, 16, 13, 17])
# choose the starting index rather than the element
n = 2
myAverage = np.array([2, 3.5, 4.5, 10, 14.5, 15, 14.5])
diffAr = myArray[n:] - myAverage
array([ 2. , 1.5, 10.5, 4. , 1.5, -2. , 2.5])
ただ、一般的なコメント:変数名としてarray
とdiff
を使用しないでください
その後diffAr
は、この(私はmyArray
に一つの要素を追加しているので、あなたの場合に比べて一つの要素以上)のように見えます。
EDIT2:
質問を変更しました。ここに更新された答えがあります。上記の答えに加えなければならないのは、ウィンドウサイズがm
の場合の実行中の平均値を計算する方法です。その後、一つは私が上記まったく同じものを行うことができます。この場合
import numpy as np
def runningMean(ar, m):
return np.convolve(ar, np.ones((m,))/m)[(m-1):]
a = np.array([1, 3, 4, 5, 15, 14, 16, 13])
m = 2
av = runningMean(a, m)
d = a[m:] - av[:-m]
d
は、所望の出力が含まれますCleb @
array([ 2. , 1.5, 10.5, 4. , 1.5, -2. ])
をあなたの答えをありがとう、私は後でそれが少し混乱した実現。したがって私は私の例を変えました。 – Mapa
@マパ:答えを更新しました。それが今あなたの質問に答えるかどうか私に教えてください。 – Cleb
はい。ありがとうございました。 – Mapa