2012-05-02 68 views
1

我有一個二維數組排列的N維值數組。喜歡的東西:Basic NumPy數據比較

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

我也有一個值x,我想比較針對每個數據點,我想顯示我的數據是否等於x布爾值的二維數組。

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

嗯。剛剛意識到我的答案給出了一個二維數組作爲結果,而你的問題給出了一個三維數組作爲所需的輸出。這種區別很重要嗎? –

+0

沒有那麼完美,謝謝。我會修改我想要的輸出。 – YXD

回答

2

那麼,(data == x).all(axis=-1)給你你想要的。它仍然在構建一個三維結果數組並迭代它,但至少該迭代不在Python級別,所以它應該相當快。