在NumPy中,我们可以使用numpy.count_nonzero()函数或numpy.bincount()函数来计算一个序列在数组中出现的次数。
- 使用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数组中出现次数的方法。如果你需要计算多个序列在一个数组中出现的次数,你应该将计数容器从一个整数更改为一个数组。