我有一个2D NumPy数组a
和一个list / set / 1D NumPy数组b
。我想找到a
的{{1}}行,其中包含任何b
,即
import numpy as np
a = np.array([
[1, 2, 3],
[4, 5, 3],
[0, 1, 0]
])
b = np.array([1, 2])
# result: [True, False, True]
任何提示?
答案 0 :(得分:5)
您可以使用np.in1d
查找b
中每个元素中a
的任何元素的匹配项。现在,np.in1d
会使数组变平,所以我们需要重新塑造数组。最后,由于我们希望在ANY
中的每一行找到a
匹配,因此请沿每行使用np.any
。因此,我们会有这样的实现 -
np.in1d(a,b).reshape(a.shape).any(axis=1)