【发布时间】:2016-09-12 16:52:04
【问题描述】:
我想检查数组b 是否是数组a 的子集。子集是指我想检查b 的所有元素是否都在a 中找到。
这是我的代码:
import numpy as np
a = np.array([[1,7,9],[8,3,12],[101,-74,0.5]])
b = np.array([[1,9],[8,12],[101,0.5]])
print a
print b
这是输出
数组一个
[[ 1. 7. 9. ]
[ 8. 3. 12. ]
[ 101. -74. 0.5]]
数组 b
[[ 1. 9. ]
[ 8. 12. ]
[ 101. 0.5]]
有没有办法检查 b 是否是 a 的子集?
编辑:附加信息:
根据下面的 cmets,我应该澄清我需要知道数组 b 是否是数组 a 的子集 - 如果子集中甚至缺少一个元素,那么我正在寻找一种方法来检查这一点。我不需要指示该元素在子集中的哪个位置丢失,而只是知道它丢失了。如果可以提供有关缺失元素的其他信息,那么这将是一个奖励,但这不是硬性要求。很抱歉没有早点解决这个问题。
我将问题表述为子集的原因是,如果一个数组是另一个数组的子集,那么这对我来说意味着子集数组的所有值都存在于更大的数组中。
【问题讨论】:
-
我认为您需要详细说明“我想检查是否在 a 中找到 b 的所有元素”,因为我们在这里处理
2D数组。想想可能否定你对“子集”定义的各种情况,想想必须遵循的其他情况。来自a和b的相应行的所有元素?仅在b中沿同一列? -
对不起,我应该解释一下。检查
b各列中的所有元素是否是a中的子集。这就是我所追求的。 -
所以在这种情况下所需的输出将是一个具有三个 true 值的 bool 数组,对吗?每行一个,其中确实有作为子集的列。
-
你如何在这里定义子集?您是否正在寻找一对布尔掩码的存在,例如
(a[m1,m2] == b).all(),即行和列的某个子集
标签: python arrays python-2.7 numpy