2016-06-23 15 views
0

のインデックスを取得します。は、次のように私は2つの配列を持つ配列値

上記の予想出力は次のようになります。

[0,3] since e[0] == True and f[0] == True; e[3] and f[3] ==True 

あり、そのようなマッチのよりも、私は上記の条件を満たしているすべてのインデックスのリストが必要な場合があります。

私はこれを行うことにより、一致する値のリストを見つけることを試みた:

list(e&f) 
Out[474]: 
[True, False, False, True] 

は、インデックスを取得するために、私はlist.index(True)を使用すると考えていました。しかし、それはうまくいきません。あるいは単に0として出力するだけかもしれません。

最後に、私は1がそう代わり[0,3]出力は[1,4]する必要がありますが、これは私がインデックスを取得する場合、

+4

あなたは、いくつかを求めてきましたnumpy配列の検索に関する質問。答えから一般原則を学んでいないのですか?宿題を私たちに与えてくれているようです。 – Barmar

+0

いいえ、宿題はありません。私はいくつかの仕事に取り組んでいます。私は数が少ない配列の一般原則を知っています。しかし、私の理解は、リストの.index関数を使うことができるインデックスを得ることを言います。それは1つの値を与える – Baktaawar

答えて

1

があなただけにリストの内包表記を使用することができることを行うことができます簡単ですの出力の各要素に加える必要がありますそれらを選ぶ:enumerate()を使用して

>>> e = np.array([True, False, True, True])  
>>> f = np.array([True, False, False, True]) 
>>> [i for i,v in enumerate(e&f, 1) if v] 
[1, 4] 

は、あなたが最初のインデックスを指定することができ、この場合には、1

+0

ありがとう。私は列挙関数 – Baktaawar

+0

@Baktaawarを読む必要があると思います: 'enumerate()'を使うことができます。 – mhawke

3

は、ドキュメント内numpy.whereを見てみましょう

np.where(e&f)[0] 

出力:

array([0, 3]) 
+1

'np.where(e&f)[0] + 1'は、1から始まるインデックスを持つ配列を返します。 – mhawke

1

または単にこの

np.where(e&f) 
+0

詳細を編集してください。コード専用と「試してください」の回答は、検索可能なコンテンツが含まれていないため、推奨されません。なぜ誰かが「これを試してみる」べき理由を説明しません。私たちはここで知識のためのリソースとなるよう努力しています。 – abarisone

1

あなたがnumpyのに依存することにしたくない場合は何か他のもの:

e=[True, False, True, True] 
f=[True, False, False, True] 

for idx, val in enumerate(e): 
    if cmp(e[idx], f[idx]) is 0: 
    print idx+1, val 
+0

私のコピー&ペーストの問題を修正してくれてありがとうAndy:D – GreatSUN

関連する問題