zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    字符串匹配——KMP算法(C++)
    数论——Fibonacci数列(C++)
    数据结构——线段树之二(C++)
    数据结构——线段树之一(C++)
    最后的最后
    开始的开始
    10.25模拟 保留道路
    10.25模拟 列车调度
    10.25模拟 三角形
    洛谷 P1093 奖学金
  • 原文地址:https://www.cnblogs.com/fly-book/p/13495282.html
Copyright © 2011-2022 走看看