介绍
NumPy 是一个用于数值计算的 Python 库。它专为处理数组和矩阵而设计,是科学计算中的强大工具。在本实验中,你将学习与 NumPy 数组操作相关的以下三个主题:
- 数学运算
- 广播(Broadcasting)
- 通用函数(Universal Functions)
NumPy 是一个用于数值计算的 Python 库。它专为处理数组和矩阵而设计,是科学计算中的强大工具。在本实验中,你将学习与 NumPy 数组操作相关的以下三个主题:
NumPy 提供了多种针对数组的数学运算。这些运算可以在一个或多个数组上执行。
在终端中输入以下命令以打开 Python shell:
python3
NumPy 已经安装,你可以在 Python 代码中导入它:
import numpy as np
逐元素运算是指对数组中的每个元素执行的操作。
让我们创建两个数组并执行一些逐元素运算:
## 创建两个数组
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
## 两个数组相加
print("两个数组相加: ", arr1 + arr2)
## 两个数组相减
print("两个数组相减: ", arr1 - arr2)
## 两个数组相乘
print("两个数组相乘: ", arr1 * arr2)
## 两个数组相除
print("两个数组相除: ", arr1 / arr2)
## 计算两个数组的模运算
print("两个数组的模运算: ", arr1 % arr2)
## 将数组的元素提升到指定幂次
print("数组的幂运算: ", arr1 ** 2)
输出:
两个数组相加: [ 6 8 10 12]
两个数组相减: [-4 -4 -4 -4]
两个数组相乘: [ 5 12 21 32]
两个数组相除: [0.2 0.33333333 0.42857143 0.5 ]
两个数组的模运算: [1 2 3 4]
数组的幂运算: [ 1 4 9 16]
数组级运算是指对整个数组执行的操作。
让我们创建一个数组并执行一些数组级运算:
## 创建一个数组
arr = np.array([1, 2, 3, 4])
## 计算数组中所有元素的和
print("数组的和: ", np.sum(arr))
## 计算数组中所有元素的乘积
print("数组的乘积: ", np.prod(arr))
## 查找数组中的最小元素
print("数组中的最小元素: ", np.min(arr))
## 查找数组中的最大元素
print("数组中的最大元素: ", np.max(arr))
## 计算数组中所有元素的平均值
print("数组的平均值: ", np.mean(arr))
## 计算数组中所有元素的标准差
print("数组的标准差: ", np.std(arr))
输出:
数组的和: 10
数组的乘积: 24
数组中的最小元素: 1
数组中的最大元素: 4
数组的平均值: 2.5
数组的标准差: 1.118033988749895
广播(Broadcasting)是 NumPy 的一项特性,允许在不同形状的数组之间执行逐元素操作。广播在处理不同维度的数组时尤其有用。
让我们创建一个数组并执行一些广播操作:
## 创建两个不同形状的数组
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])
## 将较小的数组广播到较大的数组
print("使用广播进行数组相加: ", array1 + array2)
print("使用广播进行数组相减: ", array1 - array2)
print("使用广播进行数组相乘: ", array1 * array2)
print("使用广播进行数组相除: ", array1 / array2)
输出:
使用广播进行数组相加: [[ 5 7 9]
[ 8 10 12]]
使用广播进行数组相减: [[-3 -3 -3]
[-6 -6 -6]]
使用广播进行数组相乘: [[ 4 10 18]
[7 16 27]]
使用广播进行数组相除: [[0.25 0.4 0.5 ]
[0.14285714 0.25 0.33333333]]
在上述代码中,我们创建了两个数组,array1
的形状为 (3,),array2
的形状为 (2,3)。借助 NumPy 的广播特性,我们在 array1
和 array2
之间执行了逐元素操作。较小的数组 array1
被广播到较大的数组 array2
,以便执行逐元素操作。广播使得在不同形状的数组上执行操作成为可能。
通用函数(Universal Functions,简称 ufuncs)是以逐元素方式操作数组的函数。它们提供了快速且高效的数组操作。
让我们创建一个数组并执行一些通用函数操作:
## 创建一个数组
arr = np.array([1, 2, 3, 4])
## 计算数组中每个元素的平方根
print("数组的平方根: ", np.sqrt(arr))
## 计算数组中每个元素的指数
print("数组的指数: ", np.exp(arr))
## 计算数组中每个元素的正弦值
print("数组的正弦值: ", np.sin(arr))
## 计算数组中每个元素的余弦值
print("数组的余弦值: ", np.cos(arr))
## 计算数组中每个元素的自然对数
print("数组的自然对数: ", np.log(arr))
输出:
数组的平方根: [1. 1.41421356 1.73205081 2. ]
数组的指数: [ 2.71828183 7.3890561 20.08553692 54.59815003]
数组的正弦值: [ 0.84147098 0.90929743 0.14112001 -0.7568025 ]
数组的余弦值: [ 0.54030231 -0.41614684 -0.9899925 -0.65364362]
数组的自然对数: [0. 0.69314718 1.09861229 1.38629436]
恭喜!你现在已经学习了 NumPy 数组操作,包括数学运算、广播(Broadcasting)和通用函数(Universal Functions)。通过这些知识,你现在可以使用 Python 执行广泛的数值计算任务。