首页 > 编程笔记 > Python笔记 阅读:34

NumPy数组运算(加减乘除、比较运算、幂运算、标量运算)

不用编写循环即可对数据执行批量运算,这是NumPy数组运算的特点,称为矢量化。大小相等的数组之间的任何算术运算,NumPy 都可以实现。

本节主要介绍简单的数组运算,如加、减、乘、除、幂运算等。下面创建两个简单的 NumPy 数组 n1 和 n2,数组 n1 包括元素 1 和 2,数组 n2 包括元素 3 和 4,如下图所示:


图 1 数组示意图

接下来实现这两个数组的运算。

NumPy加法运算

加法运算的规则是数组中对应位置的元素相加(即每行对应相加),如下图所示:


图 2 数组加法运算示意图

在程序中直接将两个数组相加即可,即 n1+n2,程序代码如下:
import numpy as np  # 导入numpy模块
n1=np.array([1,2])  # 创建一维数组
n2=np.array([3,4])
print(n1+n2)       # 加法运算
运行程序,结果为:

[46]

NumPy减法、乘法和除法运算

除了加法运算,还可以实现数组的减法、乘法和除法运算,如下图所示:


图 3 数组减法、乘法和除法运算示意图

同样地,在程序中直接将两个数组相减、相乘或相除即可,程序代码如下:
import numpy as np  # 导入numpy模块
n1=np.array([1,2])  # 创建一维数组
n2=np.array([3,4])
print(n1-n2)       # 减法运算
print(n1*n2)       # 乘法运算
print(n1/n2)       # 除法运算
运行程序,结果如下:

[-2 -2]
[3 8]
[0.33333333 0.5]

NumPy幂运算

幂运算的规则是数组中对应位置的元素分别作为底数和指数进行运算,用“**”表示,如下图所示。


图 4 数组幂运算示意图

从图 4 中得知,数组 n1 的元素 1 和数组 n2 的元素 3,通过幂运算得到的是 1 的 3 次幂;数组 n1 的元素 2 和数组 n2 的元素 4,通过幂运算得到的是 2 的 4 次幂,程序代码如下:
import numpy as np  # 导入numpy模块
n1=np.array([1,2])   # 创建一维数组
n2=np.array([3,4])
print(n1**n2)       # 幂运算
运行程序,结果为:

[116]

NumPy比较运算

数组的比较运算规则是对数组中对应位置元素进行大小比较,比较后的结果是布尔值数组,程序代码如下:
import numpy as np  # 导入numpy模块
n1=np.array([1,2])  # 创建一维数组
n2=np.array([3,4])
print(n1>=n2)      # 大于或等于
print(n1==n2)      # 等于
print(n1<=n2)      # 小于或等于
print(n1!=n2)      # 不等于
运行程序,结果如下:

[False False]
[False False]
[ True  True]
[ True  True]

NumPy数组的标量运算

首先了解两个概念:标量和向量。标量其实就是一个单独的数;而向量是一组数,这组数是按顺序排列的,这里我们理解为数组。数组的标量运算也可以理解为向量与标量之间的运算。

例如,马拉松赛前训练,一周内每天的训练量以“米”为单位,下面将其转换为以“千米”为单位,如下图所示。


图 5 数组的标量运算示意图

在程序中,米转换为千米直接输入 n1/1000 即可,程序代码如下:
import numpy as np                # 导入numpy模块
n1 = np.linspace(start=7500,stop=10000,num=6,dtype='int')  # 创建等差数列数组
print(n1)
print(n1/1000)                   # 米转换为千米
运行程序,结果如下:

[ 7500  8000  8500  9000  9500 10000]
[ 7.5 8.  8.5 9.  9.5 10. ]

上述运算过程在 NumPy 中叫作“广播机制”,它是一个非常有用的功能。

相关文章