设为首页 加入收藏

TOP

Python基础教程之数组类型
2019-04-01 00:08:18 】 浏览:42
Tags:Python 基础 教程 类型

Numpy中的向量与矩阵:


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


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


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


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


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


一些切片原则:


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


 矩阵[索引,切片]或者[切片,索引]  
"font-family: 宋体;">得到维数为
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的单位矩阵


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


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


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


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


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


例如:


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))


 例如: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))        #将符号变化的向量的前半部分和后半部分进行交换



编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python基础教程之Python数据分析.. 下一篇Python中使用枚举类

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }