介绍
本实验将涵盖 NumPy 的一些高级功能,包括线性代数、随机数生成和掩码数组(masked arrays)。
本实验将涵盖 NumPy 的一些高级功能,包括线性代数、随机数生成和掩码数组(masked arrays)。
NumPy 提供了一套全面的函数用于线性代数运算。以下是一些示例:
在终端中输入以下命令以打开 Python shell。
python3
可以使用 np.dot()
函数计算两个数组的点积。两个数组 A 和 B 的点积定义为 A 和 B 对应元素乘积的总和。
import numpy as np
## 创建两个数组
a = np.array([1, 2])
b = np.array([3, 4])
## 计算点积
dot_product = np.dot(a, b)
print(dot_product) ## 输出: 11
可以使用 @
运算符或 np.matmul()
函数进行矩阵乘法。
请仔细阅读以下示例。
## 创建两个矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## 矩阵乘法
C = A @ B
print(C) ## 输出: [[19 22], [43 50]]
你也可以通过另一种方式得到结果。
## 创建两个矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## 矩阵乘法
C = np.matmul(A,B)
print(C) ## 输出: [[19 22], [43 50]]
可以使用 np.linalg.det()
和 np.linalg.inv()
函数分别计算矩阵的行列式和逆矩阵。
## 创建一个矩阵
A = np.array([[1, 2], [3, 4]])
## 计算行列式和逆矩阵
det_A = np.linalg.det(A)
inv_A = np.linalg.inv(A)
print(det_A) ## 输出: -2.0
print(inv_A) ## 输出: [[-2. 1. ], [ 1.5 -0.5]]
现在轮到你构建两个数组并使用 np.dot()
函数计算点积。使用 @
或 np.matmul()
计算矩阵乘法,并使用 np.linalg.det()
和 np.linalg.inv()
函数计算矩阵的行列式和逆矩阵。
NumPy 提供了多种生成随机数的函数。以下是一些示例:
可以使用 np.random.rand()
函数生成 0 到 1 之间的随机数。
## 生成一个 2x2 的随机数矩阵
a = np.random.rand(2, 2)
print(a) ## 输出: [[0.43584547 0.37752558], [0.08936734 0.65526767]]
可以使用 np.random.randint()
函数生成两个指定数字之间的随机整数。
## 生成一个 1 到 10 之间的随机整数数组
a = np.random.randint(1, 10, size=(3, 3))
print(a) ## 输出: [[8 7 3], [3 3 7], [8 8 7]]
可以使用 np.random.normal()
函数生成符合正态分布的随机数。
## 生成一个符合正态分布的随机数数组
a = np.random.normal(0, 1, size=(2, 2))
print(a) ## 输出: [[ 1.28418331 -0.90564647], [-0.76477896 1.69903421]]
现在请根据上述函数完成随机数、随机整数和正态分布的输出。请完成此练习。
掩码数组是附带有掩码的数组。掩码是一个布尔值数组,用于指示数组中的哪些元素应该被掩码(隐藏)。NumPy 提供了 np.ma
模块来处理掩码数组。
可以使用 np.ma.masked_array()
函数创建掩码数组。
## 创建一个带有掩码的数组
a = np.ma.masked_array([1, 2, 3, 4], mask=[True, False, False, True])
print(a) ## 输出: [-- 2 3 --]
可以使用 np.ma.masked_where()
函数将掩码应用到数组上。
## 创建一个数组
a = np.array([1, 2, 3, 4])
## 创建一个掩码
mask = a > 2
## 应用掩码
b = np.ma.masked_where(mask, a)
print(b) ## 输出: [1 2 -- --]
掩码数组可用于处理无效值,例如 NaN(非数字)或无穷大。
## 创建一个包含无效值的数组
a = np.array([1, np.nan, np.inf, 4])
## 创建一个掩码数组
b = np.ma.masked_invalid(a)
print(b) ## 输出: [1.0 -- -- 4.0]
现在,请使用 NumPy 提供的 np.ma
模块完成掩码数组的创建。同时,使用 np.ma.masked_where()
函数将掩码应用到数组上,最后使用 np.ma.masked_invalid()
处理无效值。请完成此练习。
恭喜你完成了本次实验!
在本教程中,我们涵盖了 NumPy 的一些高级主题,包括线性代数、随机数生成和掩码数组。这些功能在数据分析和科学计算等许多应用中非常有用。
请继续努力!