2017-08-02 13 views
-1

Iは、以下の最小の例有する転置:Pythonの多次元表記自動的

a = np.zeros((5,5,5)) 
a[1,1,:] = [1,1,1,1,1] 
print(a[1,:,range(4)]) 

をI出力として、我々は2行目のものを持っている5行4列の配列を、予想されます。代わりに、4行5列、2列目に1列の配列です。ここで何が起きていますか、私が期待した結果を得るために何ができますか?スライスディメンションが最後に追加されたhttps://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#combining-advanced-and-basic-indexing

で説明したように

+0

は、私が聞いてもいいですか?私の質問はあまりに単純すぎるのでしょうか? – HolyMonk

答えて

3

これは、混合塩基性と高度インデクシングの例です。

スカラーインデックスでは、これはそこに記述されているあいまいさの限界的なケースです。以前のSOの質問と1つ以上のバグ/問題で議論されています。この場合

Numpy sub-array assignment with advanced, mixed indexing

あなたはスライスに範囲を交換し、期待される順番を取得することができます:私はdownvotedを取得なぜ

In [215]: a[1,:,range(4)].shape 
Out[215]: (4, 5)    # slice dimension last 
In [216]: a[1,:,:4].shape 
Out[216]: (5, 4) 
In [219]: a[1][:,[0,1,3]].shape 
Out[219]: (5, 3) 
+0

もしa [1、:、[0,1,3]]など(つまり、1つを除くすべてのもの)を取りたい場合は、 'a [1、:、::]]として簡単な回避策がありますか?最後のインデックスの値) – HolyMonk

+0

私の編集 - インデックスを最初にスカラーで参照してください。 – hpaulj

+0

パーフェクト、ありがとう、非常に便利で理解しやすい、ありがとう! – HolyMonk