• Python学习之数组类型一:


    Python学习之数组类型一:

    Numpy中的向量与矩阵:

    1.创建:  向量、矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] )

    矩阵是M=array( [[ ]] )  注意矩阵是双方括号

    向量可以执行基本的线性代数运算(运算是基于元素的运算),例如标量乘法/除法、线性组合、范数、标量积等。

    2.访问数组项  向量索引与切片类似于字符串与列表

                    通过索引访问矩阵(数组项),需要两个索引来访问,这些索引都在一对方栝号里。  例如:M[2:4,1:4]   表示行与列的切片

    一些切片原则:

     矩阵[index,index]    得到维数为0的标量

     矩阵[索引,切片]或者[切片,索引]   得到维数为1的向量

     矩阵[切片,切片]    得到维数为2的矩阵

    使用切片修改(替换)矩阵中的一个元素,一整行,整个子矩阵。

    3.数组构造函数----用于一些构造数组的命令生成特殊的矩阵。

    v=array([3.,5.,8.])

    ① I=diag(v,0)   #diag(v,k)  生成的结果是来自向量V的对角n阶方阵,k列元素均为零    

    print(I)

    ② T=zeros((2,2,3))   #张量T(向量、矩阵或更高阶张量)的函数ndim给出的维数总是等于其形状的长度

    print(T)

    print(ndim(T))       #使用数组属性T.ndim或者函数numpy.nidm 来获取数组的维数

    print(shape(T))       #数组属性:shape获取数组的维度  例如(23)表示二行三列矩阵

    print(len(shape(T)))

    ③ A=ones((2,3))    #生成的是由1填充的23列的矩阵

    print(A)

    ④ T=random.rand(3,3)    #random.rand(n,m) 生成由(01)中平均分布的随机数(填充)构成的nm列矩阵

    print(T)

    ⑤ A=arange(3)      #arange(n)返回元素为前n个整数的向量

    print(A)

    ⑥ v=linspace(1,2,4)    #linspace(a,b,n)生成由平均分布在ab之间的n个点组成的向量

    print(v)

    ⑦ I=identityn)     #生成阶数为n的单位矩阵

    1. 访问和修改数组形状

    访问:用reshape函数或者数组属性shape 来访问

    数组的形状是元组,例如n*m的矩阵的形状是元组(nm

    矩阵:shapeA)  #返回矩阵的形状(n,m

    向量:shapev)   #返回(n, )  注意:向量形状是包含向量长度n的单元素元组

    修改数组形状:是指在不复制数据的情况下给出数组的新视图。

    1. 重塑reshape()函数    

    例如:

    v=array([0,1,2,3,4,5])

    M=v.reshape(2,3)     #reshape()函数在不复制数据的情况下给出了一个数组的新视图

    #将向量v生成一个二行三列的矩阵

    print(M)

    print(shape(M))   #返回(23

    M[0,0]=10

    print(v)   #v=[10,1,2,3,4,5]现在的v[0]10     注意:更改M中的M中的一个元素导致v

                                            #中相应的元素自动地发生变化。

    v=array([1,2,3,4,5,6,7,8])

    M=v.reshape(2,-1)           #仅指定一个形状也很方便,并让python以与原始形状相乘的方式来确定另一个形状参数

                          #通过设置自由形状参数-1来实现

    print(shape(M))     #返回(24)两行四列的矩阵

    print(M)

    M=v.reshape(-1,2)

    print(shape(M))    #返回形状(42)的矩阵

    print(M)

    M=v.reshape(3,-1)    #如果尝试不与初识形状值相乘的形状的数组,则返回错误

    print(shape(M))

    1. 转置  矩阵转置与向量有所区别:

     例如:A = array([[1.,2.],[3.,4.]])

    B=A.T         #转置矩阵用  矩阵.T即(A.T)来切换矩阵的两个形状元素

    print(A)

    print(B)

    A[1,1]=5.

    print(B[1,1])   #返回5

    注意:v.T返回相同的向量

    v=array([1.,2.,3.])          #转置向量,使用---向量.reshape()---来实现

    print(v.T)

    print(v.reshape(1,-1))     #v的行向量

    print(v.reshape(-1,1))     #返回v的列向量

        2.叠加:

    #叠加     concatennate()方法

    a1=array([[1.,2.,3.],[4.,5.,6.]])     

    a2=array([[0.,1.,3.],[7.,8.,9.]])

    A=concatenate((a1,a2),axis=1)     #构造矩阵的通用方法concatenate((a1,a2,...),axis=0/1)

    print(A)                        #前提是用一对相匹配的子矩阵,axis=0时,子矩阵垂直叠加;axis=1时,子矩阵水平叠加

    #假设有一个长度为2n的向量,要对具有偶数个分量的向量执行偶排列

    v=array([0,1,2,3,4,5,6,7,8,9])

    def symp(v):

        n=len(v)//2

        return hstack([v[-n:],-v[:n]])

    print(symp(v))        #将符号变化的向量的前半部分和后半部分进行交换

  • 相关阅读:
    《Linux4.0设备驱动开发详解》笔记--第十四章:Linux网络设备驱动
    《Linux4.0设备驱动开发详解》笔记--第十三章:Linux块设备驱动
    《Linux4.0设备驱动开发详解》笔记--第十二章:Linux设备驱动的软件架构思想
    《Linux4.0设备驱动开发详解》笔记--第十一章:内存与I/O访问
    《Linux4.0设备驱动开发详解》笔记--第十章:Linux设备驱动中的中断与时钟
    《Linux4.0设备驱动开发详解》笔记--第九章:Linux设备驱动中的异步通知与同步I/O
    《Linux4.0设备驱动开发详解》笔记--第八章:linux设备驱动的阻塞与非阻塞
    《机器学习》(西瓜书)笔记(5-2)--神经网络
    《机器学习》(西瓜书)笔记(5-1)--神经网络
    《机器学习》(西瓜书)笔记(4)--决策树
  • 原文地址:https://www.cnblogs.com/chenzhijuan-324/p/10577513.html
Copyright © 2020-2023  润新知