已经在 SO 上提出了类似的问题,但是它们有更具体的限制,并且它们的答案不适用于我的问题。
一般来说,确定任意 numpy 数组是否是另一个数组的子集的最 Pythonic 方法是什么?更具体地说,我有一个大约 20000x3 的数组,我需要知道完全包含在一个集合中的 1x3 元素的索引。更一般地说,是否有一种更 Pythonic 的方式来编写以下内容:
master = [12, 155, 179, 234, 670, 981, 1054, 1209, 1526, 1667, 1853] # some indices of interest
triangles = np.random.randint(2000, size=(20000, 3)) # some data
for i, x in enumerate(triangles):
if x[0] in master and x[1] in master and x[2] in master:
print i
对于我的用例,我可以安全地假设 len(master) << 20000。(因此,假设 master 已排序也是安全的,因为这很便宜)。