Numpy中替代Scipy模块的mode函数
在本文中,我们将介绍在Numpy中替代Scipy模块的mode函数的两种方法。
阅读更多:Numpy 教程
方法一:使用Numpy的bincount函数
Numpy的bincount函数可以返回一个数字数组中的非负整数的出现次数。利用这个函数,我们可以分别求出一个数组中每个数字的出现次数。为了找到众数,我们可以找到出现次数最多的数字。
import numpy as np
# 创建一个包含重复数字的数组
arr = np.array([0, 1, 1, 3, 2, 1, 2, 3, 3, 3])
# 使用bincount函数返回数字出现的次数
counts = np.bincount(arr)
# 返回出现次数最多的数字
mode = np.argmax(counts)
print(mode) # 输出3
在这个例子中,我们使用Numpy的bincount函数找到了数组中出现次数最多的数字3。
方法二:构建自定义的函数
除了使用Numpy的bincount函数之外,我们还可以构建一个自定义函数来实现模式的查找。
import numpy as np
def mode(arr):
# 将数组中的数转化为int型
arr = arr.astype(np.int)
# 寻找重复数的个数及索引
unique, counts = np.unique(arr, return_counts=True)
# 寻找出现次数最多的数字及其位置
idx = np.argmax(counts)
return unique[idx], counts[idx]
# 创建一个包含重复数字的数组
arr = np.array([0, 1, 1, 3, 2, 1, 2, 3, 3, 3])
# 调用自定义函数找到数组中出现次数最多的数字及其个数
mode_value, mode_count = mode(arr)
print(mode_value, mode_count) # 输出3, 4
在这个例子中,我们定义了一个名为mode的自定义函数,使用了Numpy的unique函数来找到数组中每个数字的出现次数和位置,以及一个argmax函数来找到出现次数最多的数字及其位置。最后,我们从mode函数中返回众数及其出现次数。
总结
本文介绍了两种在Numpy中替代Scipy模块的mode函数的方法。第一种方法使用了Numpy的bincount函数来找到出现次数最多的数字。第二种方法是利用Numpy的unique函数和argmax函数来构建一个自定义的函数来查找众数及其出现次数。
极客教程