计算两个 NumPy 数组在相应索引处给定项目的出现次数

Count occurrences of two NumPy arrays having given items at corresponding indices

提问人:David Jackson 提问时间:9/25/2020 最后编辑:GeorgyDavid Jackson 更新时间:9/26/2020 访问量:55

问:

我有两个 NumPy 数组,如下所示:

import numpy as np

a = np.array([2, 1, 1, 2, 0, 2, 2, 2, 1, 1])
b = np.array([4, 3, 4, 4, 3, 3, 4, 3, 4, 3])

我想计算数组中遇到某个项目的次数,条件是该数组在相应索引处有项目:2ab4

a = np.array([2, 1, 1, 2, 0, 2, 2, 2, 1, 1])
b = np.array([4, 3, 4, 4, 3, 3, 4, 3, 4, 3])
              ↑        ↑        ↑

如您所见,有 3 种这样的情况。我该如何计算?

python 数组 numpy

评论


答:

1赞 Georgy 9/26/2020 #1

您可以按如下方式实现它:

import numpy as np

a = np.array([2, 1, 1, 2, 0, 2, 2, 2, 1, 1])
b = np.array([4, 3, 4, 4, 3, 3, 4, 3, 4, 3])
result = ((a == 2) & (b == 4)).sum()
print(result)
# 3

a == 2并将在项目分别等于 2 和 4 时使用值创建布尔数组:b == 4True

>>> a == 2
array([ True, False, False,  True, False,  True,  True,  True, False, False])
>>> b == 4
array([ True, False,  True,  True, False, False,  True, False,  True, False])

通过使用逻辑和运算符,我们将得到一个布尔数组,其中两个项目都是:&(a == 2) & (b == 4)TrueTrue

>>> (a == 2) & (b == 4)
array([ True, False, False,  True, False, False,  True, False, False, False])

要计算值的总数,我们可以使用 sum 方法。True


引用: