统计学涉及数据的收集、分析以及基于收集到的信息得出结论。
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 个元素),中位数被计算为两个中间元素(3 和 4) 的平均值,即 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.803568381206575
是 marks
的标准差。它告诉我们 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 的最小值和最大值,即 1 和 65。
注意:要了解更多关于 min()
和 max()
的信息,请访问NumPy min() 和NumPy max()。