NumPy - Sum 函数
什么是和?
在数学中,和是两个或多个数字相加的结果。例如,2 加 3 等于 5。
它通常用加号 (+) 表示。求和也可以涉及对一系列数字进行加法运算,通常使用希腊字母 sigma () 来表示该运算。
NumPy sum() 函数
NumPy 中的 sum() 函数计算沿指定轴的数组元素之和,可以灵活地跨行、列或整个数组进行求和。
以下是 NumPy 中 sum() 函数的基本语法 -
numpy.sum(a, axis=None, dtype=None, out=None, keepdims=False)
其中,
- a: 包含待求和元素的输入数组。
- axis: 求和的轴。如果为 None,则对数组的所有元素求和。对于多维数组,您可以指定一个轴(0 表示行,1 表示列,等等)。
- dtype: 用于求和的数据类型。如果未指定,则默认为数组的数据类型。
- out: 存储结果的位置。如果提供,则必须与输入数组的形状和类型相同。
- keepdims: 如果为 True,则缩小的轴将保留在结果中,作为大小为 1 的维度。这对于广播很有用。
对一维数组的所有元素求和
如果您有一个一维数组,您可以使用 numpy.sum() 函数计算其所有元素的总和。以下是示例 -
import numpy as np # 定义一个一维数组 arr = np.array([1, 2, 3, 4, 5]) # 计算所有元素的和 total_sum = np.sum(arr) print("数组总和:", total_sum)
以下是输出结果 -
数组总和:15
沿二维数组中特定轴求和
在二维数组中,您可以沿特定轴计算和。例如,沿行或列求和 -
import numpy as np # 定义一个二维数组 arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 沿行求和 (axis=1) sum_rows = np.sum(arr_2d, axis=1) # 沿列求和 (axis=0) sum_columns = np.sum(arr_2d, axis=0) print("沿行求和:", sum_rows) print("沿列求和:", sum_columns)
以下是得到的输出 -
沿行求和:[ 6 15 24] 沿列求和:[12 15 18]
使用指定数据类型求和
您还可以指定要计算和的数据类型。这在处理大数或需要特定精度的结果(例如 float64)时尤其有用。以下是示例 -
import numpy as np # 定义一个整数数组 arr_int = np.array([10, 20, 30]) # 使用指定数据类型 (float64) 计算和 sum_float = np.sum(arr_int, dtype=np.float64) print("Sum with dtype float64:", sum_float)
以下是得到的输出 -
使用 dtype float64 计算和:60.0
使用"Keepdims"参数求和
keepdims 参数有助于在求和运算后保留原始数组的维数。如果设置为 True,结果将与输入数组具有相同的维数,但求和后的轴的大小将减少为 1。
import numpy as np # 定义一个二维数组 arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 沿列求和并保持维度不变 sum_keepdims = np.sum(arr_2d, axis=0, keepdims=True) print("Sum with keepdims=True:", sum_keepdims)
以下是得到的输出 −
Sum with keepdims=True: [[12 15 18]]
NumPy Sum 的应用
numpy.sum() 函数在科学计算、数据分析和机器学习领域有着广泛的应用。一些常见的用例如下:
- 对矩阵中的行或列求和:在数据科学中,您经常需要沿特定轴计算和,以汇总表格或矩阵中的数据。
- 计算数组中的总值: 对数组中的元素求和有助于财务分析、统计和科学计算,例如计算测量值或数量的总和。
- 数据聚合:在分析数据时,求和值可以作为聚合操作的一部分,例如查找总销售额或计算某些数据点的累计和。
- 特征缩放:在机器学习中,特征总和通常用于数据规范化或缩放,以调整特征的范围。
优化和计算
NumPy 针对快速数组操作进行了优化,并且numpy.sum() 函数效率很高。但是,有一些方法可以进一步优化您的求和计算 -
- 使用 out 参数:如果您想将求和结果存储在预先存在的数组中,可以使用 out 参数,这样可以避免创建新数组并节省内存。
- 明智地使用 axis:仅在必要时指定轴。默认情况下,对整个数组求和是最快的操作,但沿特定轴求和可能会更慢,具体取决于数据。