一种简单的方法是
broadcasting-
(array_2d == row).all(-1).sum()
考虑到内存效率,这是一种将每行
array_2d作为
n-dimensional网格上的索引元组并假设输入中为正数的一种方法-
dims = np.maximum(array_2d.max(0),row) + 1array_1d = np.ravel_multi_index(array_2d.T,dims)row_scalar = np.ravel_multi_index(row,dims)count = (array_1d==row_scalar).sum()
这 是一篇讨论与之相关的各个方面的文章。
注意: 使用
np.count_nonzero计数布尔值可能要快得多,而不是使用求和
.sum()。因此,请考虑将其用于上述两个方法。
这是一个快速的运行时测试-
In [74]: arr = np.random.rand(10000)>0.5In [75]: %timeit arr.sum()10000 loops, best of 3: 29.6 µs per loopIn [76]: %timeit np.count_nonzero(arr)1000000 loops, best of 3: 1.21 µs per loop



