优草派  >   Python

numpy 求和

杨志强            来源:优草派

numpy 是 Python 中用于科学计算的一个核心库,它提供了高效的数组操作和数学函数。其中,求和是 numpy 中最常用的操作之一,它可以对数组中的所有元素进行累加,得到一个标量值。本文将从多个角度分析 numpy 的求和功能。

1. numpy.sum() 函数

numpy 求和

numpy.sum() 函数可以对数组中的元素进行求和,并返回一个标量值。它的语法如下:

numpy.sum(a, axis=None, dtype=None, keepdims=False)

其中,a 表示要求和的数组;axis 表示要沿着哪个轴求和,默认为 None,表示对所有元素求和;dtype 表示返回值的数据类型,默认为 None,表示自动推断;keepdims 表示是否保留求和后的维度信息,默认为 False,表示不保留。

下面是一个简单的例子:

import numpy as np

a = np.array([[1, 2], [3, 4]])

print(np.sum(a)) # 10

在这个例子中,我们创建了一个二维数组 a,并对其所有元素进行了求和。

2. 沿轴求和

除了对所有元素求和之外,numpy.sum() 函数还可以沿着指定轴对数组进行求和。例如,对于一个二维数组,我们可以沿着行轴或列轴进行求和。下面是一个例子:

import numpy as np

a = np.array([[1, 2], [3, 4]])

print(np.sum(a, axis=0)) # [4 6]

print(np.sum(a, axis=1)) # [3 7]

在这个例子中,我们分别沿着行轴和列轴对数组 a 进行了求和。沿着行轴求和得到了一个一维数组 [4, 6],其中第一个元素是 1+3=4,第二个元素是 2+4=6;沿着列轴求和得到了一个一维数组 [3, 7],其中第一个元素是 1+2=3,第二个元素是 3+4=7。

3. 数据类型和精度

在使用 numpy.sum() 函数时,我们可以指定返回值的数据类型 dtype。如果不指定,numpy 会自动推断数据类型。下面是一个例子:

import numpy as np

a = np.array([1, 2, 3], dtype=np.float32)

print(np.sum(a)) # 6.0

在这个例子中,我们创建了一个一维数组 a,其中元素的数据类型为 np.float32。当我们对其进行求和时,numpy 会自动将返回值的数据类型设为 np.float32,因为这是元素数据类型的最小精度。

4. 保留维度信息

在默认情况下,numpy.sum() 函数会消除求和后的维度信息。例如,对于一个二维数组,如果我们沿着行轴求和,结果将变成一个一维数组。如果我们想要保留维度信息,可以将 keepdims 参数设为 True。下面是一个例子:

import numpy as np

a = np.array([[1, 2], [3, 4]])

print(np.sum(a, axis=0, keepdims=True)) # [[4 6]]

print(np.sum(a, axis=1, keepdims=True)) # [[3], [7]]

在这个例子中,我们分别沿着行轴和列轴对数组 a 进行了求和,并将 keepdims 参数设为 True。沿着行轴求和后得到的结果是一个二维数组 [[4, 6]],其中第一个元素是 1+3=4,第二个元素是 2+4=6;沿着列轴求和后得到的结果是一个二维数组 [[3], [7]],其中第一个元素是 1+2=3,第二个元素是 3+4=7。

5. 性能优化

在进行大规模数据处理时,性能优化是非常重要的。在 numpy 中,可以通过使用 ufunc 函数和逐元素操作来优化求和操作的性能。例如,对于一个一维数组,我们可以使用 np.add.reduce() 函数来求和,它的性能比 numpy.sum() 函数更好。下面是一个例子:

import numpy as np

a = np.array([1, 2, 3])

print(np.add.reduce(a)) # 6

在这个例子中,我们创建了一个一维数组 a,并使用 np.add.reduce() 函数对其进行了求和,得到了标量值 6。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行