NumPy 包含许多函数,可提供线性代数所需的所有功能。下面提到的是执行不同代数计算最常用的函数。
函数 | 说明 |
---|---|
dot() | 返回两个数组的点积。 |
vdot() | 返回两个向量的点积 . |
inner() | 返回两个数组的内积。 |
matmul() | 返回两个数组的矩阵乘法。 |
det() | 计算矩阵的行列式。 |
solve() | 求解线性矩阵方程。 |
inv() | 返回乘法 矩阵的逆。 |
让我们详细讨论这些函数:
numpy.dot() 函数
numpy.dot() 函数返回两个数组的点积。在下面的示例中,计算 Arr1 和 Arr2 的点积。
import numpy as np
Arr1 = np.array([[1, 2],
[3, 4]])
Arr2 = np.array([[10, 20],
[30, 40]])
Arr3 = np.dot(Arr1, Arr2)
print(Arr3)
上述代码的输出将为:
[[ 70 100]
[150 220]]
点积计算如下:
[[1*10+2*30 1*20+2*40]
[3*10+4*30 3*20+4*40]]
= [[ 70 100]
[150 220]]
numpy.vdot() 函数
numpy.vdot() 函数返回两个向量的点积。在下面的示例中,计算 vec1 和 vec2 的点积。
import numpy as np
vec1 = np.array([1, 2, 3])
vec2 = np.array([10, 20, 30])
retval = np.dot(vec1, vec2)
print(retval)
上述代码的输出将是:
140
点积计算如下:
1*10+2*20+3*30 = 140
numpy.inner() 函数
numpy.inner() 函数返回两个数组的内积。在下面的示例中,计算 Arr1 和 Arr2 的内积。
import numpy as np
Arr1 = np.array([[1, 2],
[3, 4]])
Arr2 = np.array([[10, 20],
[30, 40]])
Arr3 = np.inner(Arr1, Arr2)
print(Arr3)
上述代码的输出将是:
[[ 50 110]
[110 250]]
内积计算如下:
[[1*10+2*20 1*30+2*40]
[3*10+4*20 3*30+4*40]]
= [[ 50 110]
[110 250]]
numpy.matmul() 函数
numpy.matmul() 函数用于计算两个数组的矩阵乘法。在下面的示例中,计算 Arr1 和 Arr2 的矩阵乘法。
import numpy as np
Arr1 = np.array([[1, 2],
[3, 4]])
Arr2 = np.array([[10, 20],
[30, 40]])
Arr3 = np.matmul(Arr1, Arr2)
print(Arr3)
上述代码的输出将是:
[[ 70 100]
[150 220]]
矩阵乘法计算如下:
[[1*10+2*30 1*20+2*40]
[3*10+4*30 3*20+4*40]]
= [[ 70 100]
[150 220]]
numpy.linalg.det() 函数
numpy.linalg.det() 函数用于计算矩阵的行列式。在下面的示例中,计算矩阵 mat 的行列式。
import numpy as np
mat = np.array([[1, 2],
[3, 4]])
retval = np.linalg.det(mat)
print(retval)
上述代码的输出将是:
-2.0000000000000004
行列式计算如下:
1*4-2*3 = -2
numpy.linalg.solve()函数
numpy.linalg.solve()函数用于求解线性方程组矩阵方程。考虑下面提到的线性方程组:
可以用矩阵形式表示如下。
上述方程的解为:x=1, y=5, z =7。这可以使用 numpy.linalg.solve() 函数来解决,如下例所示。
import numpy as np
A = np.array([[1, 2, 3],
[2, 3, 1],
[3, 1, 2]])
B = np.array([32, 24, 22])
sol = np.linalg.solve(A, B)
print(sol)
上述代码的输出将是:
[ 1. 5. 7.]
numpy.linalg.inv() 函数
numpy.linalg.inv() 函数用于计算给定矩阵的乘法逆矩阵。 在下面的示例中,计算矩阵 mat 的乘法逆矩阵。
import numpy as np
mat = np.array([[1, 2],
[3, 4]])
invmat = np.linalg.inv(mat)
print("原始矩阵:")
print(mat)
print("\n逆矩阵:")
print(invmat)
上述代码的输出将是:
原始矩阵:
[[1 2]
[3 4]]
逆矩阵:
[[-2. 1. ]
[ 1.5 -0.5]]