さまざまなサイズの配列があり、そこから連続する n 個の数値を平均化し、結果として別の配列を作成します。
私は2つの異なる方法を思いつきましたが、それぞれに問題があり、これがこれを解決する最善の方法であるかどうかはわかりません:
numpy.array_split() 関数の使用:
import numpy as np no_splits = 3 #Or any number user defines no_items = int(np.random.random(1)*100) # To get a variable number of items pre_array = np.random.random(no_items) mean_array = np.mean(np.array_split(pre_array,no_splits)) #This is efficient but gives an error if len(pre_array)%no_splits != 0
enumerate(pre_array) 代替:
mean_array = [np.mean(pre_array[i-no_splits+1:i]) for i, x in enumerate(pre_array) if i%no_splits == 0 and i != 0]
これは問題ありませんが、i%no_splits != 0 の場合は最後の値をクリップします。理想的には、コードをコンパクトに保ちながら、残りの値の平均である最後の値を作成します。
これはそれぞれ私の目的のために機能しますが、より大きな配列に対して最も効率的かどうかはわかりません。
前もって感謝します!