是否有一个与isin()等效的numpy函数可以基于行工作



假设我有两个numpy数组,例如:

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

arr2 = np.array([[0,1],[1,2]])

我现在想要的是一个函数,它将arr1的行与arr2的行进行比较,并输出以下形状的列表

[True,False,True,False]

其中第一位和倒数第二位为真,因为它们表示arr1中也出现在arr2中的行。

然而,我尝试使用numpy.isin(arr1,arr2),与元素arr2相比,它给出了具有arr1的元素的形状arr1的阵列。

提前谢谢。

您可以使用广播:

(arr1==arr2[:,None]).all(2).any(0)

输出:array([ True, False, True, False])

解释:

  • 将arr2扩展到一个额外的维度:arr2[:,None]
  • 按元素比较
  • 最后一个维度上的all值为True吗?(即[0,1]==[0,1]需要为[True, True](
  • 这些聚合的any是真的吗?([0,1]==[0,1](True(或[0,1]!=[0,2](False(中的一个就足够了(

相关内容

  • 没有找到相关文章

最新更新