• Python-01矩阵、数组和列表等的总结


    python的基础知识总结

    使用到了numpy库,所以第一步需要

    import numpy as np

    1.创建矩阵

      1.1一般矩阵的创建

    创建一个二维的矩阵,并使用ndim、shape、size分别获取矩阵的维度,大小,元素个数。

    # 1)创建矩阵
    a1 = np.array([[1,2,3],
                  [2,3,4]])
    print("矩阵a1:
    ",a1)
    print("number of dimension:",a1.ndim)
    print("shape:",a1.shape)
    print('size:',a1.size)
    # matrix 方式创建
    a3 = np.matrix([[1,2,3],
                    [4,5,6]])
    print("a3:
    ",a3)
    # mat方式 
    from numpy import *
    data1 = mat(zeros((3,3)))#创建一个3*3的零矩阵
    data2 = mat(ones( (2,4)) ) #创建一个 全1矩阵
    data3 = mat(random.rand(2,2)) #这里的random模块使用的是numpy中的random模块,random.rand(2,2)创建的是一个二维数组,需要将其转换成#matrix
    data4 = mat(random.randint(10,size=(3,3))) # 10以内的随机3*3 矩阵
    data5 = mat(random.randint(2,8,size=(2,6))) # 产生一个2-8之间随机整数的矩阵
    data6 = mat(eye(2,2,dtype=int)) #产生一个2*2 的对角矩阵
    # 对角矩阵
    b = [1,2,3]
    b1 = mat(diag(b)) # 生成一个对角线为1 2 3 的对角矩阵
    print("对角矩阵为:
    ",b1)
    

      

      1.2特殊矩阵的创建 

    import numpy as np
    
    # 特殊矩阵的创建
    # numpy 的类型 arange有序数列 linspace的使用
    a = np.array([2,3,4],dtype=np.int32)
    print(a.dtype)
    b = np.arange(10,20,2)
    print(b)
    c = np.arange(12).reshape((3,4))
    print(c)
    d1 = np.linspace(1,20,10)
    print(d1)
    d2 = np.linspace(1,20,10).reshape((2,5))
    print(d2)
    
    data1 = np.zeros((3,5))
    print("全零矩阵:
    ",data1)
    data2 = np.ones((3,4),dtype=np.int16)
    print("全一阵:
    ",data2)
    data3 = np.empty((3,4),dtype=np.float32)
    print("empty:
    ",data3)
    

      

    2.矩阵的运算

    # 矩阵的运算
    print("# 矩阵的运算:")
    c1 = mat([1,2,3])
    c2 = mat([[1],[2],[3]])
    c3 = c1*c2
    print("矩阵乘运算结果:",c3)
    
    c4 = multiply(c1,c2)
    print("矩阵对应元素相乘:
    ",c4)
    c5 = c1 * 2
    print("矩阵扩大多少倍:",c5)
    
    # 矩阵的逆 转置
    print("# matrix 求逆:")
    d1 =mat(eye(2,2)*0.5)
    d2 = d1.I #求矩阵得逆矩阵
    print("矩阵的逆矩阵为:
    ",d2)
    d3 = d1.T
    print("矩阵的转置:
    ",d3)
    # 矩阵的每一列、行的和
    d4 = mat([[1,1],[2,3],[4,2]])
    d5 = d4.sum(axis=0)   #列求和
    d6 = d4.sum(axis=1)  #行求和
    print("列求和:
    ",d5)
    print("行求和:
    ",d6)
    d7 = sum(d4[1,:]) #计算第一行所有列之和
    d8 = sum(d4[:,1])# 矩阵行数 0 1 2行  列数 0 1 列
    print("注意d4矩阵:",d7) # 2+3=5
    print("注意d4矩阵:",d8) # 1+3+2=6
    
    # 计算最大值和最小值 和索引
    d9 = d4.max()
    print("d4 matrix max:",d9)
    d10 = max(d4[:,1]) #计算第二列的最大值
    print("第二列最大值:",d10)  #此方法得到的是矩阵
    d11 = d4[1,:].max()
    print("第二列最大值:",d11)  # this way calclulate a number
    d12 = np.max(d4,0) #计算所有列的最大值
    print("所有列的最大值:",d12)
    d13 =np.max(d4,1) #计算所有行的最大值
    print("所有行的最大值:
    ",d13)
    d14 = np.argmax(d4,0) #计算所有列的最大值对应的索引
    print("所有列最大值对应的索引:
    ",d14)
    d15 = np.argmax(d4[1,:]) #
    print("第二行最大值对应改行的索引:",d15)
    
    e1 = mat([[1,2,3],[4,5,6],[7,8,9]])
    e2 = e1[1:,1:] #分割出矩阵第二行,第二列以后的元素
    print("矩阵的分割:
    ",e2)
    
    e3 = mat(ones((2,2)))
    e4 = mat(eye(2))
    e5 = vstack((e3,e4))  #按列合并,增加了行数
    print("矩阵列合并:
    ",e5)
    e6 = hstack((e3,e4))
    print("矩阵的行合并:
    ",e6)
    
    f1 = [[1],'hello',3]
    
    f2 = array([[1,2,3],[2,3,4]])
    dimension = f2.ndim
    m,n = f2.shape
    number = f2.size #元素总数
    str = f2.dtype #元素的类型
    print("矩阵的维数:",dimension)
    print("矩阵的行数和列数:",m,n)
    print("矩阵元素总个数:",number)
    print("元素的类型:",str)
    

    3 矩阵、列表、数组之间转换

    g1 = [[1,2],[3,2],[4,5]]  #列表
    g2 = array(g1)  #将列表转化为二维数组
    g3 = mat(g1) #将列表转化为矩阵
    g4 = array(g3) #将矩阵转化为数组
    g41 = g3.getA() #将矩阵转化为数组
    g5 = g3.tolist() #将矩阵转化为列表
    g6 = g2.tolist() #将数组转化为列表
    print("列表:",g1)
    print("数组:",g2)
    print("矩阵:",g3)
    print("矩阵转为数组:",g4)
    print("矩阵转为数组:",g41)
    print("矩阵转化为列表:",g5)
    print("数组转化为列表:",g6)
    

      

  • 相关阅读:
    JS Map的使用
    C# 创建Windows服务
    Oracle 表空间不足解决办法
    C# 企业微信API开发(获取Token,给用户发送消息)
    企业微信API开发笔记
    css实现div不定宽高垂直水平居中解决方案
    前端面试题目大全(附答案)
    移动Web开发
    jquery 给iframe里的元素添加事件
    Jquery实现可拖动进度条demo
  • 原文地址:https://www.cnblogs.com/yumoz/p/13278740.html
Copyright © 2020-2023  润新知