gpt4 book ai didi

python - 快速检查数组中的元素是否在另一个数组中(2D)

转载 作者:行者123 更新时间:2023-12-04 14:02:58 25 4
gpt4 key购买 nike

给定一个二维数组,检查它的元素是否在另一个二维数组中。不循环遍历第二个数组(如果可能)。

a = np.array([[1,0], [2,0], [3,0]])
b = np.array([[1,0], [3,0]])

检查a中的数组是否在b中。我试过:

np.isin(a, b)

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

我想要:

array([True, False, True])

谢谢

也试过类似的东西:np.sum(np.isin(a, b), axis=1) <= 1但它不适用于所有输入。

最佳答案

您可以像下面这样使用np.all(-1)np.any(-1):

>>> a = np.array([[1,0], [2,0], [3,0]])
>>> b = np.array([[1,0], [3,0]])

>>> (a[:, None] == b).all(-1).any(-1)
array([ True, False, True])


# for more detail
>>> (a[:,None] == b)
array([[[ True, True],
[False, True]],

[[False, True],
[False, True]],

[[False, True],
[ True, True]]])

>>> (a[:, None] == b).all(-1)
array([[ True, False],
[False, False],
[False, True]])

另一个例子:

>>> a = np.array([[1,5], [1,9], [3,9]])
>>> b = np.array([[1,5], [3,9]])
>>> (a[:, None] == b).all(-1).any(-1)
array([ True, False, True])

关于python - 快速检查数组中的元素是否在另一个数组中(2D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69435359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com