zoukankan      html  css  js  c++  java
  • numpy中矩阵

    矩阵

    Numpy中矩阵是ndarray的子类, 矩阵是二维的

    Key_Function

      1. 将字符串转为矩阵, 矩阵的行与行之间用分号隔开, 行间元素用空格隔开

      2. 将Numpy的数组(如np.arange(9))转成矩阵

    T属性: 获得矩阵的转置

    I属性: 获得矩阵的逆矩阵

    Code

    import numpy as np
    
    A = np.mat('1 2 3; 4 5 6; 7 8 9')
    print(A)
    '''
    [[1 2 3]
     [4 5 6]
     [7 8 9]]
    '''
    
    print(A.T)  # 矩阵的转置
    '''
    [[1 4 7]
     [2 5 8]
     [3 6 9]]
    '''
    
    print(A.I)  # 矩阵的逆矩阵
    '''
    [[ -4.50359963e+15   9.00719925e+15  -4.50359963e+15]
     [  9.00719925e+15  -1.80143985e+16   9.00719925e+15]
     [ -4.50359963e+15   9.00719925e+15  -4.50359963e+15]]
    '''
    
    print(np.mat(np.arange(9).reshape(3, 3)))   # 将ndarray转成矩阵

     

    从已有的矩阵创建新矩阵

    Key_Function

    np.eye函数, 创建单位矩阵

    矩阵与标量相乘, 等于矩阵的各个元素分别与标量相乘

    np.bmat函数, 创建复合矩阵, 类似与np.mat, 输入的是代表矩阵的字符串, 而不是代表数字的字符串

    Code

    import numpy as np
    
    A =np.eye(2)
    print(A)
    '''
    [[ 1.  0.]
     [ 0.  1.]]
    '''
    
    B = 2 * A
    print(B)
    '''
    [[ 2.  0.]
     [ 0.  2.]]
    '''
    
    print(np.bmat("A B; A B"))
    '''
    [[ 1.  0.  2.  0.]
     [ 0.  1.  0.  2.]
     [ 1.  0.  2.  0.]
     [ 0.  1.  0.  2.]]
    '''

    矩阵的通用函数

    Key_Function

    np.zeros_like函数, 将参数数组的元素全部设为0

    flat属性, 是一个扁平迭代器, 将数组设置为1维, 并将各元素的值设置为设定值

    np.frompyfunc函数, 创建通用函数, 可以将一组指定的操作封装成一个函数

    Code

    import numpy as np
    
    def ultimate_answer(a):
        result = np.zeros_like(a)    # 创建一个与a形状相同, 并且元素全部为0的数组
        result.flat = 42    # flat属性提供一个扁平迭代器, 逐个将数组各元素设置为设定的值
        return result
        
    ufunc = np.frompyfunc(ultimate_answer, 1, 1)    # 指定输入的参数为1, 输出的参数个数也是1
    print(ufunc(np.arange(4)))
    # [array(42) array(42) array(42) array(42)]
    
    print(ufunc(np.arange(4).reshape(2, 2)))
    '''
    [[array(42) array(42)]
     [array(42) array(42)]]
    '''

    通用函数的方法

    通用函数有四个方法, reduce, accumulate, reduceat, outer

    这些方法只对输入两个参数, 输出一个参数的ufunc对象有效

    Key_Function

    reduce函数, 沿着指定的轴, 在连续的数组元素之间递归调用通用函数

    accumulate函数, 将reduce函数的中间值存在一个数组中返回

    reduceat函数, 按照索引, 返回索引范围内的reduce结果

    Code

    import numpy as np
    
    a = np.arange(9)
    print(a)
    # [0 1 2 3 4 5 6 7 8]
    print(np.add(a, a)) # np.add 需要两个输入参数, 一个输出参数
    # [ 0  2  4  6  8 10 12 14 16]
    print(np.add.reduce(a)) # 沿着指定的轴, 对连续的数组元素递归地调用reduce
    # 36
    
    print(np.add.accumulate(a)) # 递归的输入数组, 与reduce不同, 它会将中间运算结果存储并返回
    # [ 0  1  3  6 10 15 21 28 36]
    
    # reduceat函数解析
    print(np.add.reduceat(a, [0, 5, 2, 7]))
    # [10  5 20 15]
    print(np.add.reduce(a[0:5]))    # 0小于5, 返回reducea[0:5]的结果
    # 10
    print(a[5])
    # 5
    print(np.add.reduce(a[2:7]))
    # 20
    print(a[7])
    # 7
    
    # outer方法
    print(np.add.outer(np.arange(3), a))    # 返回一个数组,它的秩等于输入的两数组的秩的和
    '''
    [[ 0  1  2  3  4  5  6  7  8]
     [ 1  2  3  4  5  6  7  8  9]
     [ 2  3  4  5  6  7  8  9 10]]
    '''
  • 相关阅读:
    冬至——汤圆
    偷偷的高兴!
    sql 70229 考试样题(2)
    SQL Server开发人员应聘常被问的问题妙解汇总
    GOOLE Picasa Web License
    辞旧迎新!
    VC98\mfc\lib' specified in 'LIB environment variable' 系统找不到指定路径
    ASP 入门
    OpenCV类型转换
    坐标旋转变换公式的推导
  • 原文地址:https://www.cnblogs.com/draven123/p/11397450.html
Copyright © 2011-2022 走看看