矩阵的初始化指采用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]]
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。