zoukankan      html  css  js  c++  java
  • numpy中与高等数学有关的函数

    1.方阵的迹

    方阵的迹就是方阵的主对角线元素之和

    # -*- coding:utf-8 -*-
    # @Author: WanMingZhu
    # @Date: 2019/8/12 9:37
    
    import numpy as np
    
    arr = np.random.randint(1, 5, size=(4, 4))
    print(arr)
    # 调用np.trace便可求出矩阵的迹
    print(np.trace(arr))
    """
    [[1 4 2 3]
     [3 2 2 2]
     [3 2 3 3]
     [1 4 2 4]]
    10
    """
    

    2.如何求两个矩阵之间的距离

    import numpy as np
    
    arr1 = np.array([[0, 1],
                     [1, 0]])
    
    arr2 = np.array([[1, 1],
                     [1, 1]])
    # 先计算a和b的差,得出arr3
    arr3 = arr1 - arr2
    # 然后让arr3和arr3本身进行点乘
    arr4 = arr3 @ arr3
    # 此时arr4的迹便是距离的平方
    print(np.trace(arr4))  # 2
    

    3.如何求出一个矩阵的逆矩阵和伴随矩阵

    import numpy as np
    
    a = np.array([[1, -2, 1],
                  [0, 2, -1],
                  [1, 1, -2]])
    # 直接对a使用np.linalg.inv即可求出逆矩阵
    a_inv = np.linalg.inv(a)
    print(a_inv)
    """
    [[ 1.          1.          0.        ]
     [ 0.33333333  1.         -0.33333333]
     [ 0.66666667  1.         -0.66666667]]
    """
    
    # 使用np.linalg.det(a)求出行列式的值
    a_det = np.linalg.det(a)
    print(a_det)  # -3.0000000000000004
    
    # 然后逆矩阵a_inv和行列式的值a_det相乘即可得出伴随矩阵
    print(a_inv * a_det)
    """
    [[-3. -3. -0.]
     [-1. -3.  1.]
     [-2. -3.  2.]]
    """
    

    4.如何解多元一次方程

    import numpy as np
    
    """
    x+2y+z=7
    2x-y+3z=7
    3x+y+2z=18
    求这个方程组的解
    """
    # 首先将系数写下来,排成一个矩阵
    a = np.array([[1, 2, 1],
                  [2, -1, 3],
                  [3, 1, 2]])
    # 将右边的常数写下来,排成一个矩阵
    b = np.array([7, 7, 18])
    # 求解,将参数传进去
    x = np.linalg.solve(a, b)
    print(x)  # [ 7.  1. -2.]
    # 验证
    print(a @ x)  # [ 7.  7. 18.]
    

    5.求矩阵的秩

    import numpy as np
    
    # 生成4行4列的单位矩阵
    i = np.eye(4)
    print(i)
    """
    [[1. 0. 0. 0.]
     [0. 1. 0. 0.]
     [0. 0. 1. 0.]
     [0. 0. 0. 1.]]
    """
    # 求出秩
    print(np.linalg.matrix_rank(i))  # 4
    
    # 修改一个值
    i[0, 0] = 0
    print(np.linalg.matrix_rank(i))  # 3
    

    6.求协方差矩阵

    import numpy as np
    
    a = np.array([170, 180, 175])
    b = np.array([65, 80, 70])
    print(np.cov([a, b]))
    """
    [[25.         37.5       ]
     [37.5        58.33333333]]
    """
    

    7.求相关矩阵

    import numpy as np
    
    a = np.array([170, 180, 175])
    b = np.array([65, 80, 70])
    print(np.corrcoef([a, b]))
    """
    [[1.         0.98198051]
     [0.98198051 1.        ]]
    """
    

    8.生成一个方程

    import numpy as np
    
    x = np.poly1d([1, 1, 1, 1])
    print(x)
    """
       3     2
    1 x + 1 x + 1 x + 1
    就是x^3 + x^2 + x + 1
    """
    # 怎么生成出来的呢?
    # 如果矩阵里面有4个元素,那么未知数的最高次幂就是3
    # 然后矩阵里面的元素就是对应项的系数
    # 比如我想生成 8 * x^5 + 4 * x^3 + 3 * x^2 + x
    """
    首先最高次幂是5,就意味着数组里面有6个值
    x^5次幂对应的系数是8,说明第一个值是8
    没有x^4,说明x^4对应的系数是0,说明第二个元素是0。虽然是0,但是必须要写,不然numpy不知道你要生成最高几次幂的函数
    """
    # 别忘记了最后要加上一个0
    x = np.poly1d([8, 0, 4, 3, 1, 0])
    print(x)
    """
       5     3     2
    8 x + 4 x + 3 x + 1 x
    """
    
    # 另外我向x里面传值,还可以根据当前的自变量计算出对应的函数
    print(x(3))  # 2082
    print(8 * 3 ** 5 + 4 * 3 ** 3 + 3 * 3 ** 2 + 3)  # 2082
    

    9.求出一个函数的导数

    import numpy as np
    
    x = np.poly1d([2, 1, 1])
    print(x)
    """
       2
    2 x + 1 x + 1
    """
    # 调用deriv进行求导
    x1 = x.deriv()
    print(x1)  # 4 x + 1
    # 显然这个结果是正确的
    # 同样的,我们也可以计算相应的导数值
    print(x1(3))  # 13
    
  • 相关阅读:
    求职简历撰写要点和模板分享
    find命令
    MD5Init-MD5Update-MD5Final
    Linux find命令详解
    Linux进程KILL不掉的原因
    Linux操作系统的内存使用方法详细解析
    Lsof命令详解
    为什么ps中CPU占用率会有超出%100的现象?
    第12课 经典问题解析一
    第11课 新型的类型转换
  • 原文地址:https://www.cnblogs.com/traditional/p/11338347.html
Copyright © 2011-2022 走看看