numpy中的线性代数

"""线性代数"""
import numpy as np

# dot	两个数组的点积,即矩阵乘积

a = np.array([[1, 2], [3, 4]])
b = np.array([[11, 12], [13, 14]])
print(a)
print(b)
print(np.dot(a, b))
# [[37 40]
#  [85 92]]

# vdot	两个向量的点积
print(np.vdot(a, b))  # 130  #  1*11 + 2*12 + 3*13 + 4*14 = 130

# inner	两个数组的内积
print(np.inner(np.array([1, 2, 3]), np.array([0, 1, 0])))  # 2 # 等价于 1*0+2*1+3*0
print(np.inner(a, b))
# 1*11+2*12, 1*13+2*14
# 3*11+4*12, 3*13+4*14
# [[35 41]
#  [81 95]]

# matmul	两个数组的矩阵积
print(np.matmul(a, b))
# [[37 40]
#  [85 92]]

# 二维和一维运算
a = [[1, 1], [2, 2]]
b = [1, 2]
print(np.matmul(a, b))  # [3 6]
print(np.matmul(b, a))  # [5 5]
# 维度大于二的数组
a = np.arange(8).reshape(2, 2, 2)
b = np.arange(4).reshape(2, 2)
print(a)
print(b)
print(np.matmul(a, b))

# determinant	数组的行列式, numpy.linalg.det() 函数计算输入矩阵的行列式
b = np.array([[6, 1, 1], [4, -2, 5], [2, 8, 7]])
print(b)
print(np.linalg.det(b))
print(6 * (-2 * 7 - 5 * 8) - 1 * (4 * 7 - 5 * 2) + 1 * (4 * 8 - -2 * 2))
# solve	求解线性矩阵方程
# x + y + z = 6
# 2y + 5z = -4
# 2x + 5y - z = 27
a = np.array([[1, 1, 1], [0, 2, 5], [2, 5, -1]])
b = np.array([6, -4, 27])
print(np.linalg.solve(a, b))  # [ 5.  3. -2.]


# inv	计算矩阵的乘法逆矩阵
# AX = B   =>  X = A的逆B
a = np.array([[1, 1, 1], [0, 2, 5], [2, 5, -1]])
print(a)
ainv = np.linalg.inv(a)
print('a 的逆:')
print(ainv)

print('矩阵 b:')
b = np.array([[6], [-4], [27]])
print(b)

print('计算:A^(-1)B:')
x = np.linalg.solve(a, b)
print(x)
原文地址:https://www.cnblogs.com/fly-book/p/13495282.html