查找NumPy数组中一个序列的出现次数

  • Post category:Python

在NumPy中,我们可以使用numpy.count_nonzero()函数或numpy.bincount()函数来计算一个序列在数组中出现的次数。

  1. 使用numpy.count_nonzero()函数
    接下来是使用numpy.count_nonzero()函数计算出现次数的步骤:

步骤1:引入NumPy模块

import numpy as np

步骤2:定义一个NumPy数组

arr = np.array([1,2,3,4,1,2,1,1,6,7])

步骤3:定义序列

seq = np.array([1,2])

步骤4:计算序列出现的次数

count = np.count_nonzero((arr == seq[:, None]).all(-1), axis=1)
print(count)

以上代码中,我们通过将arr数组和seq数组用广播方式相减,然后检查每一行是否全部为True,以确定包含序列的行数。最后使用numpy.count_nonzero()函数计算出现的次数。

这段代码的输出结果是[2, 1],这表明数组中出现了两个包含[1,2]的行,一个包含了[1,2,3,4]的行。

2.使用numpy.bincount()函数

接下来是使用numpy.bincount()函数计算出现次数的步骤:

步骤1: 定义一个NumPy数组

arr = np.array([1,2,3,4,1,2,1,1,6,7])

步骤2: 定义序列

seq = np.array([1,2])

步骤3: 将数组中包含序列的所有元素替换成1

arr2 = np.zeros_like(arr)
for i in range(len(seq)):
    arr2[np.where(arr == seq[i])] = 1

步骤4:使用np.bincount()函数计算1出现的次数

count = np.bincount(arr2)[1]
print(count)

以上代码中,我们用arr2数组记录arr中是否包含序列的元素,1表示包含,0表示不包含。然后使用numpy.bincount()函数统计1出现的次数,就得到了序列在数组中出现的次数。

这段代码的输出结果是2,这表明数组中出现了两个包含[1,2]的行。

总结:

以上是两种计算序列在NumPy数组中出现次数的方法。如果你需要计算多个序列在一个数组中出现的次数,你应该将计数容器从一个整数更改为一个数组。