查找一维子数组是否在二维数组中

Find whether 1D sub-array is in 2D array

我有一个像这样的数据数组:

all = [[1,-1], [1,0], [1,1], [2,-1], [2,0], [2,1]]  etc.

里面大约有 4000 双,但通常只有几百双。

我需要查找此大型数据数组中是否已存在二值数组,例如。 [1,1] 是否存在于数组中?

所以我需要的功能应该是这样的:

isValid( all, [1,1] )
>>> True

isValid( all, [1,100] )
>>> False

我无法获得 numpy 函数 isin()in1d() 来为我执行此操作。我找到的一个功能,对于列表,是:

all.index( [1,1] )
>> True

但是当 不是 all 数组中时,我必须 try/catch 一个 ValueError 然后 return False - 目前可以接受,但不理想。

如果安装了 numpy,可以使用 np.where 在二维 numpy 数组中查找一维数组的索引,并检查 return 结果是否

import numpy as np

def isValid(arr, val):
   return len(np.where(np.prod(arr == val, axis = -1))[0]) != 0

all_items = np.array([[1,-1], [1,0], [1,1], [2,-1], [2,0], [2,1]] )
search1 = isValid(all_items, [1,1] ) # True
search2 = isValid(all_items, [1,100] ) # False

您可以像这样使用简单的数组查找:

a = [[1,-1], [1,0], [1,1], [2,-1], [2,0], [2,1]]

[2,0] in a # True
[2,3] in a # False

a.index([2,0]) # result: 4
a.index([3,5]) # throw error, use try catch