线性代数
| 函数 | 描述 |
|---|---|
| dot | 两个数组的点积,即元素对应相乘 |
| vdot | 两个向量的点积 |
| inner | 两个数组的内积 |
| matmul | 两个数组的矩阵积 |
| determinant | 数组的行列式 |
| solve | 求解线性矩阵方程 |
| inv | 计算矩阵的乘法逆矩阵 |
1> numpy.dot()
对于两个一维数组,返回的是两个数组对应下标元素的乘积和(数学上的内积);
对于二维数组,返回的是两个数组的矩阵乘积
语法:
numpy.dot(a, b, out = None)
| 参数 | 说明 |
|---|---|
| a | ndarray数组 |
| b | ndarray 数组 |
| out | 可选,用于保存 numpy.dot()函数的计算结果 |
a_np = np.array([[1, 2],[5, 6]])
b_np = np.array([[11, 15],[17, 19]])
print(np.dot(a_np, b_np))
# 输出结果:
# [[ 45 53]
# [157 189]]
2> numpy.vdot()
两个向量的点积;
如果第一个参数是复数,那么它的共轭复数会用于计算;
如果参数是多维数组,则会被展开
a_np = np.array([[1, 2],[5, 6]])
b_np = np.array([[11, 15],[17, 19]])
print(np.vdot(a_np, b_np)) # 输出结果: 240
3> numpy.inner()
返回一维数组的向量内积
inner_np = np.inner(np.array([1, 2, 3]),np.array([1, 3, 4]))
print(f'向量内积:{inner_np}') # 输出结果: 向量内积:19
a_np = np.array([[1, 2],[5, 6]])
b_np = np.array([[11, 15],[17, 19]])
print(f'数组 a_np 和 b_np的内积:\n{np.inner(a_np,b_np)}')
# 输出结果:
# 数组 a_np 和 b_np的内积:
# [[ 41 55]
# [145 199]]
4> numpy.matmul()
返回两个数组的矩阵乘积
a_np = [[1, 2],[5, 6]]
b_np = [[11, 15],[17, 19]]
print(f'矩阵乘积:\n{np.matmul(a_np,b_np)}')
# 输出结果:
# 矩阵乘积:
# [[ 45 53]
# [157 189]]
a_np = [[1, 2],[5, 6]]
b_np = [5, 6]
print(f'二维和一维的乘积:{np.matmul(a_np,b_np)}')
# 输出结果:
# 二维和一维的乘积:[17 61]
5> numpy.linalg.det()
用于计算输入矩阵的行列式
b_np = np.array([[6, 1, 1],[4, -2, 5],[2, 8, 7]])
print(f'b_np 的行列式:{np.linalg.det(b_np)}')
# 输出结果:
# b_np 的行列式:-306.0
6> numpy.linalg.solve()
计算矩阵形式的线性方程的解
a_np = np.array([[1, 1, 1],[0, 2, 5],[2, 5, -1]])
b_np = np.array([[6],[-4],[27]])
print(f'线性方程组的解:\n{np.linalg.solve(a_np,b_np)}')
# 输出结果:
# 线性方程组的解:
# [[ 5.]
# [ 3.]
# [-2.]]
7> numpy.linalg.inv()
计算矩阵的乘法逆矩阵
a_np = np.array([[1, 1, 1],[0, 2, 5],[2, 5, -1]])
print(f'逆矩阵:\n{np.linalg.inv(a_np)}')
# 输出结果:
# 逆矩阵:
# [[ 1.28571429 -0.28571429 -0.14285714]
# [-0.47619048 0.14285714 0.23809524]
# [ 0.19047619 0.14285714 -0.0952381 ]]