python类的数组属性_Python学习之数组类型一:

本文详细介绍了Python中Numpy库的数组类型,包括向量和矩阵的创建、访问、修改及其基本线性代数运算。讲解了如何使用array函数创建向量和矩阵,以及如何通过索引和切片访问数组元素。还讨论了reshape函数在不复制数据的情况下改变数组形状的功能,以及转置矩阵的方法。同时,文章还展示了concatenate方法用于叠加数组和向量的实例。
摘要由CSDN通过智能技术生成

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获取数组的维度 例如(2,3)表示二行三列矩阵

print(len(shape(T)))

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

print(A)

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

print(T)

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

print(A)

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

print(v)

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

访问和修改数组形状

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

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

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

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

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

重塑:reshape()函数

例如:

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

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

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

print(M)

print(shape(M)) #返回(2,3)

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)) #返回(2,4)两行四列的矩阵

print(M)

M=v.reshape(-1,2)

print(shape(M)) #返回形状(4,2)的矩阵

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值