理论教育 Python计算思维:矩阵的初始化与重组

Python计算思维:矩阵的初始化与重组

时间:2023-11-22 理论教育 版权反馈
【摘要】:矩阵的初始化指采用numpy提供的各类方法快速形成需要的矩阵,重组则是指对矩阵的数据进行重新组织,例如两个矩阵合并成一个,从原矩阵分片得到子矩阵,行(列)互换,插入新行(列)等。例如产生服从(0,1)正态分布的伪随机数5×5的矩阵,其代码如下:3.矩阵的分片numpy的array对象,与列表相似,因而也支持分片操作。

Python计算思维:矩阵的初始化与重组

矩阵初始化指采用numpy提供的各类方法快速形成需要的矩阵,重组则是指对矩阵的数据进行重新组织,例如两个矩阵合并成一个,从原矩阵分片得到子矩阵,行(列)互换,插入新行(列)等。

1.列表转化为矩阵

使用array方法,可以将一个列表转换为矩阵,其格式为:

A=np.array(列表)

例如:

A=np.array([[1,2,3],[33,45,23]])

定义一个2行3列的矩阵,矩阵的第一行为1,2,3;第二行为33,45,23。

2.初始化矩阵

numpy提供了zeros、ones、eye、random等方法形成矩阵。zeros方法生成一个元素都是0的矩阵,例如:B=np.zeros((2,3)),生成一个2行3列的元素全是0的矩阵。注意,zeros方法的参数是一个元组tuple类型。

例如:

对应于zeroes,ones方法生成所有元素都是1的矩阵,例如:

>>>x=np.ones((2,3))

eye方法生成单位矩阵,如下面语句:

X=np.eye(5)

生成一个5×5的单位矩阵。

除此之外,numpy还提供了生成随机数矩阵的方法,且这些随机数可以指定为服从某种统计分布。例如产生服从(0,1)正态分布的伪随机数5×5的矩阵,其代码如下:

3.矩阵的分片

numpy的array对象,与列表相似,因而也支持分片操作。所以,通过对已有矩阵进行分片操作,也是一种生成矩阵的方法。矩阵的分片支持两个维度,其格式为:

视频讲解:python矩阵运算—重组

X[row1:row2:step1[,col1:col2:step2]](www.daowen.com)

例如:

上述代码首先生成一个4×4矩阵x。语句y=x[:,:2],取x的所有行、前2列,组成y矩阵;语句z=x[:2,2:]则选择前2行、最后两列组成z矩阵。

4.矩阵插入新行或新列

在实际问题的求解过程中,有时需要为矩阵插入新行或新列,形成符合要求的矩阵,可以使用np.insert方法实现,其语法为:

结果矩阵=np.insert(矩阵a,插入位置,矩阵b,[axis=值])

上述语句将b矩阵按指定方向(axis=0行,axis=1列)插入到矩阵a的指定位置。

例如:

上述代码将矩阵b插入矩阵a的第0行,a新增一行,新行的数值都是1。

继续编写代码如下:

上述代码,在a矩阵的第0列,插入一列,数据都是0。

5.矩阵合并

矩阵进行列合并或行合并,形成新矩阵,可以使用np.c_[]和np.r_[]实现,例如:

上述两个矩阵a和b行数相等,因此可以进行列合并,使用np.c_[]实现。

6.矩阵的行(列)交换

numpy矩阵的行、列交换,采用切片的方式进行。行交换时,第一维用一个列表确定交换的两行的标号,第二维用“:”号代表所有的列,如下列语句完成矩阵data第0行与第2行的交换:

data[[0,2],:]=data[[2,0],:]

列交换时,将需要交换的两列的标号写到第二维。如下面语句完成矩阵data第0列和第2列的交换:

data[:,[0,2]]=data[:,[2,0]]

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈