2016-06-16 13 views
5

誰かがこのコードのしていることを説明できますか?ブール型のnumpy配列を追加

a = np.array([[1, 2], [3, 4]]) 
    a[..., [True, False]] 

ここで[True, False]は何をしていますか?

+0

numpy 1.10と1.11では、これはa [...、[1,0]]とFutureWarningと同じです。 – kennytm

+0

とはどういう意味ですか? – JRR

+0

[numpy boolean indexing](http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#boolean-array-indexing) – MaThMaX

答えて

1

整数

From the numpy docsとして省略記号表記とブール:

省略記号の数に拡張:x.ndimと同じ長さの選択タプルを作るために必要なオブジェクト。唯一

TrueFalseare just obfuscated 0 and 1存在する単一省略記号があるかもしれません。ブーリアン値は、0または1のようにインデックスを指定します。ブール値は、0から1のようにインデックスを指定します。


コメントに質問

に応じてそれは最初

a = np.array([[1, 2], [3, 4]]) 
a[..., [True, True]] # = [[2,2],[4,4]] 

その魔法のようだ。しかし、我々は

a[..., [1,1]] # = [[2,2],[4,4]] 

としてそれを考えるとき、それはあまり印象的なようです。

同様:

b = array([[1,2,3],[4,5,6]]) 
b[...,[2,2]] # = [[3,3],[5,5]] 

省略ルールを適用した後。ちょうど0、1、または17のような真と偽のグラブ列インデックスは、いくつかの微妙な違いは、(ブールのは、int型とは異なるタイプを持っている)があります複雑なインデックス作成のための


ブール配列

を持っているでしょう。 A lot of the hairy details can be found here。これらはあなたのコードに何のロールもないようですが、どのようにnumpyの索引付けが機能するかを調べるのは興味深いものです。特に

は、この行は、あなたが探しているものはおそらく次のとおりです。(例えばPythonのboolsのリストなど)将来ブール配列-同類で

常にブール指標として扱われます

彼らはインデックスツール

として極めて複雑でおよそ ブール配列を、話

インデックスとして使用されるブール配列は、インデックス配列よりも全く異なる方法で扱われます。 アレイの初期寸法はビット整数インデックス・アレイの場合とは異なり

ダウンスキップ

をインデックスに登録されているものとして、ブール配列は 、ブール場合には、同じ形状 でなければなりませんresultは、ブール値配列内のすべての真の要素に対応する、添え字付き配列 のすべての要素を含む1次元配列です。インデックス付き配列の 要素は常に反復され、 行優先(Cスタイル)の順序で返されます。結果は y [np.nonzero(b)]と同じです。インデックス配列の場合と同様に、返されるのはデータである のコピーであり、スライスで取得されたビューではありません。

+0

これが当てはまる場合、なぜ「a [...、 ([[2、2]、[4,4]]) – JRR

+0

@JRR申し訳ありませんが、あまりにも短く投稿された短い答えを切ることを意味しませんでした –

+0

@JRRあなたが確認することができます[...、[True、True]]は[...、[1、1]]と同じ方法を評価するのですか? –

関連する問題