首页 > 解决方案 > 返回彼此相等的两个数组的值的索引的最快方法是什么?

问题描述

假设我有这两个 numpy 数组:

A = np.array([[1,2,3],[4,5,6],[8,7,3])
B = np.array([[1,2,3],[3,2,1],[8,7,3])

它应该返回

[0,2]

由于第 0 和第 2 索引处的值彼此相等。

这样做最有效的方法是什么?

我试过类似的东西:

[val for val in range(len(A)) if A[val]==B[val]]

但得到了错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

标签: pythonnumpy

解决方案


你最好寻找矢量化解决方案,所以......

你可以尝试这样做:

>>>np.where(np.all(A == B, axis=1))
array([0 2])

您可以在这里看到矢量化的好处:https ://chelseatroy.com/2018/11/07/code-mechanic-numpy-vectorization/amp/


推荐阅读