NumPy 统计函数

统计学涉及数据的收集、分析以及基于收集到的信息得出结论。

NumPy 为我们提供了多种可以进行统计数据分析的统计函数。


常用的 NumPy 统计函数

以下是 NumPy 提供的一些统计函数

函数 描述
median() 返回数组的中位数
mean() 返回数组的平均值
std() 返回数组的标准差
percentile() 返回数组中第 n 个百分位数
min() 返回数组的最小值
max() 返回数组的最大值

接下来,我们将通过示例来学习这些函数。


使用 NumPy 查找中位数

NumPy 数组的中位数是排序数组中的中间值。

换句话说,它是将数据的高半部分与低半部分分开的值。

假设我们有以下数字列表

1, 5, 7, 8, 9, 12, 14
 

那么,中位数就是中间的那个数字,在这里是8

需要注意的是,如果元素的数量是

  • 奇数,中位数就是中间的那个元素。
  • 偶数,中位数就是两个中间元素的平均值。

现在,我们将学习如何使用 NumPy 来计算具有奇数和偶数个元素的数组的中位数。


示例 1:计算奇数个元素的数组的中位数

import numpy as np

# create a 1D array with 5 elements
array1 = np.array([1, 2, 3, 4, 5])
                                                                                                           
# calculate the median
median = np.median(array1)

print(median) 

# Output: 3.0

在上面的示例中,名为 array1 的数组包含奇数个元素(5 个元素)。

因此,np.median(array1) 返回 array1 的中位数为 3,这是排序数组的中间值。


示例 2:计算偶数个元素的数组的中位数

import numpy as np

# create a 1D array with 6 elements
array1 = np.array([1, 2, 3, 4, 5, 7])

# calculate the median
median = np.median(array1)
print(median) 

# Output: 3.5

这里,由于 array1 数组有偶数个元素(6 个元素),中位数被计算为两个中间元素(34) 的平均值,即 3.5


NumPy 二维数组的中位数

中位数的计算不仅限于一维数组。我们也可以计算二维数组的中位数。

在二维数组中,中位数可以沿着水平或垂直轴单独计算,也可以跨整个数组计算。

在计算二维数组的中位数时,我们在 np.median() 中使用 axis 参数来指定计算中位数的轴。

如果我们指定,

  • axis = 0,中位数沿垂直轴计算
  • axis = 1,中位数沿水平轴计算

如果我们不使用 axis 参数,则中位数会在整个数组上计算。


示例:计算二维数组的中位数

import numpy as np

# create a 2D array
array1 = np.array([[2, 4, 6], 
                   [8, 10, 12], 
                   [14, 16, 18]])

# compute median along horizontal axis 
result1 = np.median(array1, axis=1)

print("Median along horizontal axis :", result1)

# compute median along vertical axis
result2 = np.median(array1, axis=0)

print("Median along vertical axis:", result2)

# compute median of entire array
result3 = np.median(array1)

print("Median of entire array:", result3)

输出

Median along horizontal axis : [ 4. 10. 16.]
Median along vertical axis: [ 8. 10. 12.]
Median of entire array: 10.0

在这个示例中,我们创建了一个名为 array1 的二维数组。

然后,我们分别计算了沿水平轴和垂直轴的中位数,最后计算了整个数组的中位数。

  • np.median(array1, axis=1) - 沿水平轴计算中位数,结果为 [4. 10. 16.]
  • np.median(array1, axis=0) - 沿垂直轴计算中位数,结果为 [8. 10. 12.]
  • np.median(array1) - 整个数组计算中位数,结果为 10.0

为了计算整个二维数组的中位数,我们首先将数组展平成 [ 2, 4, 6, 8, 10, 12, 14, 16, 18],然后找到展平数组的中间值,在本例中为 10


使用 NumPy 计算平均值

NumPy 数组的平均值是数组中所有元素的平均值。

它通过将数组中的所有元素相加,然后将结果除以数组中的总元素数来计算。

我们使用 np.mean() 函数来计算平均值。例如,

import numpy as np

# create a numpy array
marks = np.array([76, 78, 81, 66, 85])

# compute the mean of marks
mean_marks = np.mean(marks)

print(mean_marks)

# Output: 77.2

在这个示例中,平均值为 77.2,这是通过将元素(76, 78, 81, 66, 85)相加并除以 5(数组元素总数)计算得出的。


示例 3:NumPy N 维数组的平均值

import numpy as np

# create a 2D array
array1 = np.array([[1, 3], 
                 [5, 7]])

# calculate the mean of the entire array
result1 = np.mean(array1)
print("Entire Array:",result1)  # 4.0

# calculate the mean along vertical axis (axis=0)
result2 = np.mean(array1, axis=0)
print("Along Vertical Axis:",result2)  # [3. 5.]

# calculate the mean along  (axis=1)
result3 = np.mean(array1, axis=1)
print("Along Horizontal Axis :",result3)  # [2. 6.]

输出

Entire Array: 4.0
Along Vertical Axis: [3. 5.]
Along Horizontal Axis : [2. 6.]

这里,我们首先创建了名为 array1 的二维数组。然后我们使用 np.mean() 计算了平均值。

  • np.mean(array1) - 计算整个数组的平均值
  • np.mean(array1, axis=0) - 沿垂直轴计算平均值
  • np.mean(array1, axis=1) 沿水平轴计算平均值

NumPy 数组的标准差

标准差是衡量数组中数据离散程度的指标。它告诉我们数组中的数据点与平均值的偏离程度。

  • 较小的标准差表示数据点更接近平均值
  • 较大的标准差表示数据点分布更分散。

在 NumPy 中,我们使用 np.std() 函数来计算数组的标准差。


示例:在 NumPy 中计算标准差

import numpy as np

# create a numpy array
marks = np.array([76, 78, 81, 66, 85])

# compute the standard deviation of marks
std_marks = np.std(marks)
print(std_marks)

# Output: 6.803568381206575

在上面的示例中,我们使用 np.std() 函数来计算 marks 数组的标准差。

这里,6.803568381206575marks 的标准差。它告诉我们 marks 数组中的值与数组的平均值偏离了多少。


NumPy 二维数组的标准差

在二维数组中,标准差可以沿着水平或垂直轴单独计算,也可以跨整个数组计算。

与平均值和中位数类似,在计算二维数组的标准差时,我们在 np.std() 中使用 axis 参数来指定计算标准差的轴。


示例:计算二维数组的标准差。

import numpy as np

# create a 2D array
array1 = np.array([[2, 5, 9], 
                 [3, 8, 11], 
                 [4, 6, 7]])

# compute standard deviation along horizontal axis
result1 = np.std(array1, axis=1)
print("Standard deviation along horizontal axis:", result1)

# compute standard deviation along vertical axis
result2 = np.std(array1, axis=0)
print("Standard deviation  along vertical axis:", result2)

# compute standard deviation of entire array
result3 = np.std(array1)
print("Standard deviation of entire array:", result3)

输出

Standard deviation along horizontal axis: [2.86744176 3.29983165 1.24721913]
Standard deviation along vertical axis: [0.81649658 1.24721913 1.63299316]
Standard deviation of entire array: 2.7666443551086073

这里,我们创建了一个名为 array1 的二维数组。

然后,我们分别计算了沿水平轴和垂直轴的标准差,最后计算了整个数组的标准差。


计算 NumPy 数组的百分位数

在 NumPy 中,我们使用 percentile() 函数来计算给定数组的第 n 个百分位数。

让我们看一个例子。

import numpy as np

# create an array
array1 = np.array([1, 3, 5, 7, 9, 11, 13, 15, 17, 19])

# compute the 25th percentile of the array
result1 = np.percentile(array1, 25)
print("25th percentile:",result1)

# compute the 75th percentile of the array
result2 = np.percentile(array1, 75)
print("75th percentile:",result2)

输出

25th percentile: 5.5
75th percentile: 14.5

这里,

  • array1 中,25% 的值小于或等于 5.5
  • array1 中,75% 的值小于或等于 14.5

注意:要了解更多关于百分位数的信息,请访问NumPy 百分位数


查找 NumPy 数组的最小值和最大值

我们在 NumPy 中使用 min()max() 函数来查找给定数组中的最小值和最大值。

让我们看一个例子。

import numpy as np

# create an array
array1 = np.array([2,6,9,15,17,22,65,1,62])

# find the minimum value of the array
min_val = np.min(array1)

# find the maximum value of the array
max_val = np.max(array1)

# print the results
print("Minimum value:", min_val)
print("Maximum value:", max_val)

输出

Minimum value: 1
Maximum value: 65

正如我们所见,min()max() 分别返回 array1 的最小值和最大值,即 165

注意:要了解更多关于 min()max() 的信息,请访问NumPy min()NumPy max()

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战