线性代数处理与线性方程及其矩阵表示相关的数学概念。
NumPy 为我们提供了执行常见线性代数任务的函数,例如数组乘法、求解线性方程组等。
NumPy 线性代数函数
以下是 NumPy 中用于执行线性代数任务的各种函数列表。
运算符 | 描述 |
---|---|
dot() |
计算两个数组的乘积 |
inner() |
计算数组的内积 |
outer() |
计算数组的外积 |
det() |
计算矩阵的行列式 |
solve() |
求解线性矩阵方程 |
inv() |
计算矩阵的乘法逆 |
trace() |
计算对角线元素的和 |
NumPy dot() 函数
我们可以使用 NumPy 线性代数模块中提供的 dot()
函数来计算两个数组的乘积。例如,
import numpy as np
array1 = np.array([1, 3, 5])
array2 = np.array([2, 4, 6])
# use of dot() to perform array multiplication
result = np.dot(array1, array2)
print(result)
# Output: 44
在此示例中,dot(array1, array2)
函数计算 array1 和 array2 的点积,即 1*2 + 3*4 + 5*6 = 44。
NumPy inner() 函数
在 NumPy 中,inner()
函数计算两个数组的内积,即它们对应元素的乘积之和。
让我们看一个使用 2D 数组的 inner()
示例。
import numpy as np
array1 = np.array([[1, 3],
[5, 7]])
array2 = np.array([[2, 4],
[6, 8]])
# inner() for 2D arrays
result = np.inner(array1, array2)
print(result)
输出
[[14 30] [38 86]]
在上面的示例中,inner()
首先将 2D 数组展平为 1D 数组,然后计算这些展平数组的内积。
生成的 2x2 矩阵是展平结果的重塑版本。
这里,内积计算如下:
1*2+3*4 1*6+3*8
5*2+7*4 5*6+7*8
注意: 对于 1D 数组,inner()
等同于 dot()
。
NumPy outer() 函数
NumPy 中的 outer()
函数计算两个数组的外积,即它们所有可能元素对的乘积。
让我们看一个例子。
import numpy as np
array1 = np.array([1, 3, 5])
array2 = np.array([2, 4, 6])
# outer() to perform outer multiplication
result = np.outer(array1, array2)
print(result)
输出
[[ 2 4 6] [ 6 12 18] [10 20 30]]
这里,外积计算如下:
1*2 1*4 1*6
3*2 3*4 3*6
5*2 5*4 5*6
NumPy det() 函数
在 NumPy 中,我们使用 NumPy linalg
模块中的 det()
函数来计算方阵的行列式。例如,
import numpy as np
# define a square matrix
array1 = np.array([[1, 3],
[5, 7]])
# compute the determinant of array1
result = np.linalg.det(array1)
print(result)
# Output: -7.9999999
在这里,我们使用 linalg
模块中的 det()
函数来计算名为 array1 的方阵的行列式。
NumPy solve() 函数
在 NumPy 中,我们使用 solve()
函数来求解线性方程组。
对于给定的矩阵 A
和向量 b
,solve(A, b)
找到满足方程 Ax = b
的解向量 x
。
让我们看一个例子。
import numpy as np
# define the coefficient matrix A
A = np.array([[2, 4],
[6, 8]])
# define the constant vector b
b = np.array([5, 6])
# solve the system of linear equations Ax = b
x = np.linalg.solve(A, b)
print(x)
# Output: [-2. 2.25]
在此示例中,我们使用 linalg
模块中的 solve()
函数来求解线性方程组。
这里,输出是 [-2. 2.25]
,这是线性方程组 2x + 4y = 5 和 6x + 8y = 6 的解。
注意:solve()
函数仅适用于方阵,并且假定矩阵 A
的行列式非零,否则 solve()
将引发 LinAlgError
异常。
NumPy inv() 函数
我们在 NumPy 中使用 linalg
模块中的 inv()
函数来查找方阵的逆。例如,
import numpy as np
# define a 2x2 matrix
array1 = np.array([[2, 4],
[6, 8]])
# compute the inverse of the matrix
result = np.linalg.inv(array1)
print(result)
输出
[[-1. 0.5 ] [ 0.75 -0.25]]
在这里,我们使用 linalg.inv()
函数来计算 array1 矩阵的逆。
注意:并非所有矩阵都是可逆的,如果您尝试计算行列式为零的矩阵的逆,inv()
将引发 LinAlgError
异常。
NumPy trace() 函数
在 NumPy 中,我们使用 trace()
函数来计算矩阵对角线元素的和。例如,
import numpy as np
# define a 3x3 matrix
array1 = np.array([[6, 3, 5],
[9, 2, 1],
[7, 8, 4]])
# compute the trace of the matrix
result = np.trace(array1)
print(result)
# Output: 12
在此示例中,矩阵的对角线元素为 6、2 和 4,因此这些元素的和为 12。因此,trace()
函数将此值作为输出返回。