5.3 数组的聚合运算 (Aggregation Functions)


文档摘要

5.3 数组的聚合运算 (Aggregation Functions) 5.3 NumPy 数组的聚合运算 (Aggregation Functions) 聚合运算是数据分析中非常关键的一环。它们能够将数组中的多个值归纳为一个单一的总结性数值,例如平均值、总和、最大值、最小值等等。NumPy 提供了高效且优化的聚合函数,能够快速处理大型数据集。 5.3.1 聚合函数概述 NumPy 聚合函数通常接受一个数组作为输入,并返回一个标量值作为结果。 常见的聚合函数包括: : 计算数组元素的总和。 : 计算数组元素的乘积。 : 计算数组元素的平均值。 : 计算数组元素的标准差。 : 计算数组元素的方差。 : 查找数组中的最小值。 : 查找数组中的最大值。 : 查找数组中最小值的索引。

5.3 数组的聚合运算 (Aggregation Functions)

5.3 NumPy 数组的聚合运算 (Aggregation Functions)

聚合运算是数据分析中非常关键的一环。它们能够将数组中的多个值归纳为一个单一的总结性数值,例如平均值、总和、最大值、最小值等等。NumPy 提供了高效且优化的聚合函数,能够快速处理大型数据集。

5.3.1 聚合函数概述

NumPy 聚合函数通常接受一个数组作为输入,并返回一个标量值作为结果。 常见的聚合函数包括:

  • np.sum(): 计算数组元素的总和。

  • np.prod(): 计算数组元素的乘积。

  • np.mean(): 计算数组元素的平均值。

  • np.std(): 计算数组元素的标准差。

  • np.var(): 计算数组元素的方差。

  • np.min(): 查找数组中的最小值。

  • np.max(): 查找数组中的最大值。

  • np.argmin(): 查找数组中最小值的索引。

  • np.argmax(): 查找数组中最大值的索引。

  • np.median(): 计算数组元素的中位数。

  • np.percentile(): 计算数组元素的指定百分位数。

  • np.any(): 检查数组中是否有任何元素为 True。

  • np.all(): 检查数组中是否所有元素都为 True。

这些函数可以用于处理一维或多维数组,并且可以沿着指定的轴进行聚合。

5.3.2 聚合函数的代码实践和详解

下面通过一些代码示例来演示 NumPy 聚合函数的使用方法:

1. 总和与乘积:np.sum()np.prod()

import numpy as np arr = np.array([1, 2, 3, 4, 5]) sum_of_elements = np.sum(arr) product_of_elements = np.prod(arr) print("数组:", arr) print("元素总和:", sum_of_elements) print("元素乘积:", product_of_elements)

输出:

数组: [1 2 3 4 5] 元素总和: 15 元素乘积: 120

详解:

  • np.sum(arr) 计算数组 arr 中所有元素的总和。

  • np.prod(arr) 计算数组 arr 中所有元素的乘积。

2. 最小值与最大值:np.min()np.max()

arr = np.array([5, 2, 8, 1, 9]) min_value = np.min(arr) max_value = np.max(arr) print("数组:", arr) print("最小值:", min_value) print("最大值:", max_value)

输出:

数组: [5 2 8 1 9] 最小值: 1 最大值: 9

详解:

  • np.min(arr) 查找数组 arr 中的最小值。

  • np.max(arr) 查找数组 arr 中的最大值。

3. 最小值和最大值的索引:np.argmin()np.argmax()

arr = np.array([5, 2, 8, 1, 9]) min_index = np.argmin(arr) max_index = np.argmax(arr) print("数组:", arr) print("最小值的索引:", min_index) print("最大值的索引:", max_index)

输出:

数组: [5 2 8 1 9] 最小值的索引: 3 最大值的索引: 4

详解:

  • np.argmin(arr) 返回数组 arr 中最小值的索引。

  • np.argmax(arr) 返回数组 arr 中最大值的索引。

4. 平均值、标准差和方差:np.mean()np.std()np.var()

arr = np.array([1, 2, 3, 4, 5]) mean_value = np.mean(arr) std_value = np.std(arr) var_value = np.var(arr) print("数组:", arr) print("平均值:", mean_value) print("标准差:", std_value) print("方差:", var_value)

输出:

数组: [1 2 3 4 5] 平均值: 3.0 标准差: 1.4142135623730951 方差: 2.0

详解:

  • np.mean(arr) 计算数组 arr 中元素的平均值。

  • np.std(arr) 计算数组 arr 中元素的标准差。

  • np.var(arr) 计算数组 arr 中元素的方差。

5. 中位数和百分位数:np.median()np.percentile()

arr = np.array([1, 2, 3, 4, 5]) median_value = np.median(arr) percentile_25 = np.percentile(arr, 25) percentile_75 = np.percentile(arr, 75) print("数组:", arr) print("中位数:", median_value) print("25th 百分位数:", percentile_25) print("75th 百分位数:", percentile_75)

输出:

数组: [1 2 3 4 5] 中位数: 3.0 25th 百分位数: 2.0 75th 百分位数: 4.0

详解:

  • np.median(arr) 计算数组 arr 中元素的中位数。

  • np.percentile(arr, q) 计算数组 arr 中元素的第 q 个百分位数。

6. 沿着轴聚合

对于多维数组,可以指定 axis 参数来沿着特定的轴进行聚合。

arr = np.array([[1, 2, 3], [4, 5, 6]]) sum_along_axis_0 = np.sum(arr, axis=0) # 沿着列(axis=0)求和 sum_along_axis_1 = np.sum(arr, axis=1) # 沿着行(axis=1)求和 print("数组:\n", arr) print("沿着列求和:", sum_along_axis_0) print("沿着行求和:", sum_along_axis_1)

输出:

数组: [[1 2 3] [4 5 6]] 沿着列求和: [5 7 9] 沿着行求和: [ 6 15]

详解:

  • axis=0 表示沿着列进行聚合,结果是每一列的总和。

  • axis=1 表示沿着行进行聚合,结果是每一行的总和。

7. np.any()np.all()

arr1 = np.array([True, False, True, False]) arr2 = np.array([True, True, True, True]) any_true = np.any(arr1) all_true = np.all(arr2) print("数组1:", arr1) print("数组2:", arr2) print("数组1中是否有任何元素为 True:", any_true) print("数组2中是否所有元素都为 True:", all_true)

输出:

数组1: [ True False True False] 数组2: [ True True True True] 数组1中是否有任何元素为 True: True 数组2中是否所有元素都为 True: True

详解:

  • np.any(arr1) 检查数组 arr1 中是否有任何元素为 True

  • np.all(arr2) 检查数组 arr2 中是否所有元素都为 True

5.3.3 使用 Mermaid 图示说明聚合运算

以下是一个使用 Mermaid 图示说明聚合运算过程的例子:

图示解释:

  1. NumPy Array: 输入的 NumPy 数组。

  2. Aggregation Function: 应用于数组的聚合函数(例如 np.sum(), np.mean(), np.max() 等)。

  3. Result: Scalar Value: 聚合函数返回的标量值,代表了数组的某种统计特征。

更具体的例子,以 np.sum() 为例:

这个图示更清晰地展示了 np.sum() 函数如何将数组 [1, 2, 3, 4, 5] 聚合为标量值 15

5.3.4 聚合运算的性能考量

NumPy 的聚合函数经过高度优化,能够高效处理大型数组。然而,在处理非常大的数据集时,仍然需要考虑性能问题。

  • 避免不必要的复制: 尽量避免在聚合之前对数组进行不必要的复制,因为复制会消耗大量时间和内存。

  • 使用 out 参数: 一些聚合函数(例如 np.sum())提供了 out 参数,允许将结果写入预先分配的数组中,从而避免创建新的数组。

  • 并行计算: 对于某些计算密集型的聚合运算,可以考虑使用并行计算来加速处理。

5.3.5 总结

NumPy 聚合函数是数据分析和科学计算中不可或缺的工具。它们能够快速有效地计算数组的各种统计特征,为后续的数据分析和建模提供基础。理解并熟练掌握这些聚合函数,能够显著提高数据处理的效率。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U