2016-10-31 14 views
1

後述のようにnumpyのアレイ内の複数のインデックス付けを行うための方法はありますが整数に型numpy.ndarrayのスライスエントリを強制することができませんでしたか?複数のインデックス:IndexErrorが:

arr=np.array([55, 2, 3, 4, 5, 6, 7, 8, 9]) 
arr[np.arange(0,2):np.arange(5,7)] 

output: 
IndexError: too many indices for array 

Desired output: 
array([55,2,3,4,5],[2,3,4,5,6]) 

この問題は、アレイ上の移動平均を計算することのようになります(私は提供されている任意の関数なしでそれをやりたいです)。

start_index = np.arange(0,2) 
L = 5  # Interval length 
n = arr.strides[0] 
strided = np.lib.stride_tricks.as_strided 
out = strided(arr[start_index[0]:],shape=(len(start_index),L),strides=(n,n)) 

サンプル実行 - - ここで

+0

をあなたは 'np.vstack((ARR [np.arange(0、6)]、ARRのような何かをしたいですか[np.arange(1,7)])) '? – mgilson

+0

はい、出力になりますが、ショートカットは現実の世界のようにカウントされません。arrにはnp.arrangeで再生できないデータが含まれます。私は質問を明確にするように変更しました。 – Nickpick

+0

'np.arange(0,2)'があなたの出力にどのように関係しているのかよくわかりません。 – njzk2

答えて

1

strides使ったアプローチだ

In [976]: arr 
Out[976]: array([55, 52, 13, 64, 25, 76, 47, 18, 69, 88]) 

In [977]: start_index 
Out[977]: array([2, 3, 4]) 

In [978]: L = 5 

In [979]: out 
Out[979]: 
array([[13, 64, 25, 76, 47], 
     [64, 25, 76, 47, 18], 
     [25, 76, 47, 18, 69]]) 
+0

あなたは[0]は常に[0]要素を取るか、ストライドが行く何の寸法に応じて、違いがあることができれば明確にすることはできますか? – Nickpick

+0

@nickpickよくarr.stridesはすべての暗闇に沿って歩みのタプルを与えます。 1D配列で作業しているので、最初の軸に沿ってストライドが必要なだけなので、そのタプルの最初の要素を '[0]'で取得します。それがあなたの質問に答えたら? – Divakar

+1

@nickpick二次元ストライドの使用例については、こちらを参照してください - http://stackoverflow.com/a/40367540/3293881 – Divakar

関連する問題