2012-05-02 9 views
1

私は2D配列に配列されたN次元値の配列を持っています。何かのように:NumPyデータの基本的な比較

import numpy as np 
data = np.array([[[1,2],[3,4]],[[5,6],[1,2]]]) 

また、私は、各データポイントと比較したい単一の値xを持っている、と私は私のデータがxに等しいかどうかを示すブール値の2D配列を取得したいです。

x = np.array([1,2]) 

私が行う場合:

data == x 

私は簡単に私が望む結果を得るために、これらを組み合わせることができ

# array([[[ True, True], 
#  [False, False]], 
# 
#  [[False, False], 
#  [ True, True]]], dtype=bool) 

を取得します。しかし、私はこれらのスライスを繰り返し処理したくない、特にdata.shape[2]が大きい場合はそうだ。私が探しているのは、直接得る方法です:

array([[ True, False], 
     [False, True]]) 

この一見簡単な仕事のアイデアはありますか?

+0

Hmm。ちょうど私の答えは結果として2-d配列を与え、あなたの質問は望ましい出力として3-d配列を与えます。その区別は重要ですか? –

+0

いいえ、完璧です、ありがとう。私は希望の出力を修正します。 – YXD

答えて

2

まあ、(data == x).all(axis=-1)は、あなたに必要なものを与えます。それはまだ3次元の配列を構築してそれを反復していますが、少なくともその反復はPythonレベルではありませんので、かなり高速でなければなりません。

関連する問題