1

我有一个排列在二维数组中的 N 维值数组。就像是:

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]])

对于这个看似简单的任务有什么想法吗?

4

1 回答 1

2

嗯,(data == x).all(axis=-1)给你你想要的。它仍在构建一个 3-d 结果数组并对其进行迭代,但至少该迭代不是 Python 级别的,因此它应该相当快。

于 2012-05-02T17:00:46.790 回答