2016-06-30 7 views
3

`非ndarrayでnumpyの基本的なインデックス作成のための例が必要:約<a href="http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing" rel="nofollow">basic slicing</a>、と説明した状況があるnumpyのドキュメントでsequence`

選択オブジェクトは、任意の非ndarrayシーケンスである場合は、基本的なスライスも開始され、スライスオブジェクト、Ellipsisオブジェクト、またはnewaxisオブジェクトは含まれていますが、整数配列やその他の埋め込みシーケンスは含まれていません(リストなど)。

この説明がわかりにくいです。この状況はいつ起こるのですか?あなたはこの状況のいくつかの例を教えてくれますか?

答えて

3

これは面白い便利です。 (Ellipsisがここで役に立つ何もしない

arr[:30, ..., np.newaxis] 

、しかし:私は愚かなことだ場合

arr = np.arange(100) 

、私はこのような配列をスライスすることができます:私は次の配列を持っていることを言うことができます私はできますそれに置く)。基本的にこれは基本的なスライシングに最初の30要素をとり、新しい軸を追加するように指示します。

(それが何らかの理由でより便利かどうか)私はむしろ、私はこのように同じスライスを達成することができますしたい場合:

arr[[slice(0, 30), Ellpisis, np.newaxis]] 

私は2次元配列している場合:

arr = arr.reshape((10, 10)) 

を私は、複数のスライスオブジェクトを持つことができます。

arr[[slice(0, 5), slice(5, 10, 2)]] 

は、だから私は、一般的に、あなたがについて考えることができると仮定しますx_0、... x_Nがすべてスライス、省略記号、またはNoneである限り、3210はarr[x_0, x_1, x_2, ..., x_N]に相当します。

+1

リストにスライス「Ellipsis」または「np.newaxis」が含まれていない場合は、突然基本索引付けの代わりに高度な索引付けが行われるため、ここではタプルを使用します。質問者が引用した部分のすぐ上で述べたように、非タプルのこの動作は下位互換性のために存在します。 – user2357112

+0

@ user2357112 - それは公正な点です。リストのバージョンは便利だとは思いますが(たとえば、配列の各次元に対してインデックス作成オブジェクトを動的に作成している場合、特に、配列の前の配列の大きさ) – mgilson

+0

'apply_along_axis'は' i = np.zeros(nd、 'O') '配列を作成し、それを塗りつぶしてから' outarr [tuple(i.tolist())] = res '。 – hpaulj

関連する問題

 関連する問題