Numpy 数组按数字求和

Numpy 数组按数字求和

在数据分析和机器学习中,对数组进行求和是一种常见的操作。Numpy提供了多种函数来实现这个任务,其中sum()函数尤为重要。

阅读更多:Numpy 教程

实现数组求和

在Numpy中,我们可以使用sum()函数来求解数组中所有元素的和。下面是一个简单的例子:

import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(np.sum(a))  # 15

上述代码中,我们使用np.array()函数来创建一个Numpy数组。然后使用sum()函数来计算该数组中所有元素的和。

虽然上述代码只是处理了一维数组,但sum()函数同样适用于多维数组。下面是对一个二维数组进行求和的例子:

a = np.array([[1, 2], [3, 4]])
print(np.sum(a))  # 10

同样,对于多维数组,sum()函数可以按照任意维度计算其元素的和。例如,可以使用axis参数来指定要沿着哪个维度进行求和。下面的例子计算了一个三维数组沿第二个维度(即列)的和:

a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(np.sum(a, axis=1))  # [[ 4,  6], [12, 14]]

如果不指定axis参数,sum()函数会将整个数组的所有元素相加并返回一个标量值。

此外,Numpy还提供了其他的数组求和函数,其中一些函数非常有用。例如,可以使用cumsum()函数来计算数组中每个元素的累积和。以下是一个简单的例子:

a = np.array([1, 2, 3, 4, 5])
print(np.cumsum(a))  # [ 1,  3,  6, 10, 15]

还可以使用trapz()函数计算积分。下面的例子计算了一个由Numpy函数生成的一个随机数组的积分:

from numpy import trapz
from numpy import exp, sin

a = np.array([exp(-x/3.0) * sin(x) for x in range(6)])
print(trapz(a))  # 0.23750605964

列求和

在实际的数据处理中,经常需要计算矩阵的列的和。这在统计学分析中是很常见的,例如计算人均GDP、人口总数等。

我们可以简单地实现列求和的方法是用numpy.sum()函数并设置axis参数为0(列),如下所示:

import numpy as np

# 4×6的二维数组arr
arr = np.array([[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18],[19,20,21,22,23,24]])

# arr的每列元素的和,并打印
sum_arr = np.sum(arr,axis=0)
print(sum_arr)

上述代码中,使用np.array函数创建了一个四行六列的二维数组,存放数据。接着使用np.sum函数求出每列的和。注意这里的axis参数,它默认计算所有元素的和,故需要设置为0才能计算每列的和。

行求和

完全可以参照上面的方法实现对数组的行求和,只需将axis参数设置为1即可。如下所示:

import numpy as np

# 4×6的二维数组arr
arr = np.array([[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18],[19,20,21,22,23,24]])

# arr的每行元素的和,并打印
sum_arr = np.sum(arr,axis=1)
print(sum_arr)

这一次我们把axis参数设为了1,这就是我们计算每行元素的和的方式。

求和运算符

在Python中进行求和也可以使用普通的运算符。但是为什么要使用NumPy呢?因为Numpy数组可以进行广播,也就是说可以将不同形状的数组进行运算。这意味着你可以省略很多显式的循环,这样可以提高运算速度。

我们可以使用‘+’和‘*’符号完成两个数组之间逐元素的加、乘运算。下面这个例子中,我们创建了两个形状相等的数组,并使用‘+’运算符计算它们之间逐元素的和:

import numpy as np

# 数组加法
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c)  # [5, 7, 9]

矩阵的乘法

除了求和外,Numpy还提供了矩阵与向量、矩阵之间的乘法功能。在进行矩阵乘法时,需要使用dot()函数。

下面是一个简单的例子,将一个向量乘以矩阵:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([[4, 5, 6], [7, 8, 9], [10, 11, 12]])
c = np.dot(a, b)
print(c)  # [54 66 78]

在此例中,我们创建了一个向量a和一个矩阵b,将它们乘在一起得到了结果向量c

注意,矩阵乘法与逐元素的乘法是有本质差别的,使用*符号进行逐元素的乘法,使用dot()函数进行矩阵乘法。

实例

下面的例子演示了如何使用NumPy计算一组数据的平均值:

import numpy as np

# 平均数函数
def mean(numbers):
    return np.sum(numbers) / len(numbers)

# 计算平均数
data = [1.7, 2.3, 1.9, 4.2, 5.4, 6.0, 2.8, 4.5]
mean_val = mean(data)
print("Mean:", mean_val)

在这个例子中,我们定义了一个名为mean()的函数,该函数计算一组数据的平均值。然后,我们创建了一组数据并使用该函数计算其平均值。

总结

在本篇文章中,我们介绍了如何使用Numpy中的sum()函数对数组进行求和。我们还介绍了在矩阵处理中如何对列、行进行求和。此外,我们还用实例说明了如何使用NumPy计算一组数据的平均值和使用NumPy进行矩阵乘法。Numpy在数据处理中是一个不可或缺的利器,应该加以学习和掌握。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程