2017-06-06 16 views
2

の各次元に沿ってすべてのn番目の要素であるインデックス一次元でN次元numpyのアレイ

array([0, 3, 6, 9]) 

効率的であり、どのようなN次元のために同じことをする方法?例えば

、所与:

np.random.random((10, 15, 20)) 

各次元に沿った内のすべての第三の要素を取得する方法?

+0

何np.arange(10 * 15 'のようなもののために期待される成果だろう* 20)。フレッシュ(4,15,20) '? – MSeifert

+0

たとえば、配列にイメージデータが含まれている場合、イメージをダウンサンプリングすることになります。寸法は、高さ、幅、深さ、時間、チャンネルなどとなります。 – desa

答えて

3

3Dのために、あなたが行うことができます:

a = np.random.random((10, 15, 20)) 

a[::3,::3,::3].shape 
# (4, 5, 7) 

a.shape 
# (10, 15, 20) 

を任意の大きさのために、あなたはslice使用する可能性があります:

a[[slice(None,None,3)] * a.ndim].shape 
# (4, 5, 7) 
+0

素晴らしい!私は 'スライス 'でこのトリックについて知りませんでした。正確に私が必要としたもの。 – desa

+0

うってつけ! – Psidom