2012-05-02 37 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级别,所以它应该相当快。