NumPy median() 函数
NumPy median() 函数计算输入数组沿指定轴的中位数。中位数是分隔数据上半部分和下半部分的值。它是一种集中趋势的度量,与平均值相比,对异常值的敏感度较低。
在统计学中,中位数是指给定数据列表按一定顺序排列后的中间值。数据或观测值的排列可以按升序或降序进行。如果项数 n 为奇数,则中位数是第 n+1/2 个值。如果 n 为偶数,则中位数是中间两个数的平均值,具体来说是 n/2 和 n/2 + 1 位置上的值。
对于一维数组,中位数是数据排序后的中间值。对于多维数组,中位数是沿指定轴计算的。如果数据的元素数量为偶数,则中位数是中间两个元素的平均值。
语法
以下是 NumPy median() 函数的语法 -
numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False)
参数
以下是 NumPy median() 函数的参数 -
- a:输入数组,可以是 NumPy 数组、列表或标量值。
- axis(可选):计算中位数的轴。默认值为 None,表示计算整个数组的中位数。
- overwrite_input(可选):如果为 True,则对输入数组进行原地修改。默认值为 False。
- out(可选):存储结果的位置。如果提供,则结果的形状必须与预期输出相同。
- keepdims(可选):如果为 True,则缩小后的维度在输出中保留为 1 的维度。默认值为 False。
返回值
此函数返回输入数组的中位数。如果输入是一维的,则结果为标量;如果输入是多维的,则结果为数组。
示例
以下是使用 NumPy median() 函数计算数组中位数的基本示例 -
import numpy as np # 输入数组 x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 应用中位数 result = np.median(x) print("中位数结果:", result)
输出
以下是上述代码的输出 -
中位数结果: 5.0
示例:指定轴
median() 函数还可以计算多维数组沿特定轴的中值。在以下示例中,我们计算了二维数组沿轴 0(列)和轴 1(行)的中位数。
import numpy as np # 二维数组 x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 沿轴 0(列)应用中位数 result_axis0 = np.median(x, axis=0) # 沿轴 1(行)应用中位数 result_axis1 = np.median(x, axis=1) print("沿轴 0 的中位数:", result_axis0) print("沿轴 1 的中位数:", result_axis1)
输出
以下是输出上述代码 -
沿轴 0 的中位数:[4. 5. 6.] 沿轴 1 的中位数:[2. 5. 8.]
示例:多维数组
median() 函数对多维数组进行运算。在以下示例中,我们创建了一个二维 NumPy 数组,并计算了每个元素沿特定轴的中值 -
import numpy as np # 二维数组 x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) result = np.median(x, axis=1) print("二维数组的中值结果:", result)
输出
以下是上述代码的输出 -
二维数组的中值结果:[2. 5. 8.]
示例:'keepdims' 参数的用法
keepdims 参数允许结果保留缩小后的维度,即尺寸 1。这对于将结果广播回原始形状非常有用。在以下示例中,我们计算了沿轴 0 的中位数,并保留了缩减后的维度 -
import numpy as np # 二维数组 x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) result = np.median(x, axis=0, keepdims=True) print("keepdims=True 的中位数:", result)
输出
以下是上述代码的输出 -
keepdims=True 的中位数:[[4. 5. 6.]]
示例:绘制"median()"函数
在下面的示例中,我们绘制了median()函数的行为。我们通过导入 Numpy 和 matplotlib.pyplot 模块,计算并绘制了不同大小输入数组的中位数 -
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 100) y = np.median(x) plt.plot(x, np.full_like(x, y), label="中位数") plt.title("中位数函数") plt.xlabel("输入") plt.ylabel("中位数") plt.legend() plt.grid() plt.show()
输出
该图展示了中位数在输入范围内的恒定性质 -

numpy_statistical_functions.html