mode函数是Python中的一种用于求众数的函数,它可以返回一个数组中出现次数最多的数,或者是多个数。

一、mode函数的基本用法

使用mode函数需要先导入scipy库,使用方法如下:

from scipy import stats
import numpy as np

data = np.array([1,2,2,3,3,3,4,4,4,4])
mode_value = stats.mode(data)
print(mode_value)

上述代码中,将一个包含10个元素的数组赋值给data,使用stats.mode()计算了它的众数,即出现次数最多的数值。输出结果为:ModeResult(mode=array([4]), count=array([4]))。可见,该数组的众数为4,而且它在数组中出现了4次。

二、求多个众数

有时候一个数组中可能有多个众数,mode函数同样能够计算得到多个值。代码示例:

data = np.array([1,2,2,3,3,4,4,5,5,6])
mode_value = stats.mode(data)
print(mode_value)

输出结果为:ModeResult(mode=array([2, 3, 4, 5]), count=array([2, 2, 2, 2])),此时计算得到了4个众数,分别为2、3、4、5。

三、忽略nan值的影响

当数组中有nan值时,mode函数默认会将nan值作为结果,代码示例:

data = np.array([1,2,2,np.nan,3,3,4,4,4,4])
mode_value = stats.mode(data)
print(mode_value)

输出结果为:ModeResult(mode=array([nan]), count=array([1]))。由此得到的众数是一个nan值。若忽略nan值的影响,则需使用nanpolicy参数,示例如下:

data = np.array([1,2,2,np.nan,3,3,4,4,4,4])
mode_value = stats.mode(data, nan_policy='omit')
print(mode_value)

输出结果为:ModeResult(mode=array([4.]), count=array([4]))。这是一个忽略了nan值的结果,true value为4。

四、其他参数

mode函数还有其他有用的参数,下面列举其常见的几个参数:

1. axis参数

该参数用来指定计算众数的维度。默认值为0,即在数组元素中统计众数。如果想要在行或者列上计算众数可以设置为1或者-1。示例代码如下:

data = np.array([[1,2,2],
                 [3,3,3],
                 [4,4,4]])
mode_value = stats.mode(data, axis=1)
print(mode_value)

输出结果为:ModeResult(mode=array([[2], [3], [4]]), count=array([[2], [3], [3]])),即在每一行中求众数。

2. keepdims参数

该参数用于保持输出结果的维度和输入数组的维度相同。示例代码如下:

data = np.array([[1,2,2],
                 [3,3,3],
                 [4,4,4]])
mode_value = stats.mode(data, axis=1, keepdims=True)
print(mode_value)

输出结果为:ModeResult(mode=array([[2], [3], [4]]), count=array([[2], [3], [3]]))。与前一个示例不同,在keepdims设为True后,输出结果的数组维度与输入数组一致。

3. return_counts参数

该参数用于返回每个值在数组中出现的次数。示例代码如下:

data = np.array([1,2,2,3,3,3,4,4,4,4])
mode_value = stats.mode(data, return_counts=True)
print(mode_value)

输出结果为:ModeResult(mode=array([4]), count=array([4]))。与前面的示例相比,本示例中返回了每个值在数组中出现的次数,即4在数组中出现了4次。

总结

mode函数是Python中求众数的常用函数,它可以计算一个数组中的单个或者多个众数。同时,可以通过忽略nan值,设置axis,keepdims,return_counts参数来定制众数的计算方法,这对于特定情况下的数据处理是非常重要的。