【发布时间】:2022-01-26 07:33:56
【问题描述】:
假设我们有一个数组A 和一组数组B。在B 的每一行中找到A 中有多少项的快速方法是什么?例如,如果我有:
A = np.array([2, 5, 10])
B = np.array([(3, 5, 10), (1, 2, 5), (4, 6, 9)])
所以我应该得到C = [2, 2, 0]。
【问题讨论】:
-
不应该是
[2,2,0]吗?
假设我们有一个数组A 和一组数组B。在B 的每一行中找到A 中有多少项的快速方法是什么?例如,如果我有:
A = np.array([2, 5, 10])
B = np.array([(3, 5, 10), (1, 2, 5), (4, 6, 9)])
所以我应该得到C = [2, 2, 0]。
【问题讨论】:
[2,2,0]吗?
你也可以使用广播:
(B==A[:,None,None]).sum((0,2))
输出:
array([2, 2, 0])
【讨论】:
np.count_nonzero(np.isin(B, A), axis=1) 可能是实现您寻找的结果的一种方式。或者,以更优雅的方式——根据@mozway 的建议——np.isin(B, A).sum(axis=1)。
【讨论】:
np.isin(B, A).sum(1) ;)