2013-04-11 66 views
19

私はnumpy配列を持っています。私はすべての3番目の要素の平均である新しい配列を作成したい。したがって、新しいアレイは元のサイズの3分の1になります。一例として、numpy配列のn要素ごとに平均化する

np.array([1,2,3,1,2,3,1,2,3]) 

が配列を返す必要があります:

np.array([2,2,2]) 

誰もがこれを行うための効率的な方法を提案することはできますか?私は空白を描いている。

答えて

31

あなたのアレイarrが3で割り切れる長さを有する場合:

np.mean(arr.reshape(-1, 3), axis=1) 

は、より高い次元のアレイに再形成し、次いで追加のディメンションのいずれかに減らす操作のいくつかのフォームを実行するnumpyのプログラミングの主食です。

+7

ハイメ - ありがとう、それは物事を行う非常にエレガントな方法です。 これらのいわゆる「numpyプログラミングの要点」について、どこから読めるのかアドバイスしていますか? – user1654183

+1

'arr'長さが3で割り切れない場合は、 ' arr = np.nanmean(nr.pad(arr.astype(float)、(0、3 - arr.size%3)、 mode = '定数'、constant_values = np.NaN).reshape(-1,3)、axis = 1) ' – plong0

関連する問題