线性代数Python计算:矩阵分块

news/2024/6/19 5:41:32 标签: 线性代数, 矩阵, python

可以通过下标序列来访问numpy的数组a中的片段:a[[i,j]]表示a[i]和a[j],a[:]表示所有元素,a[i:j]表示从a[i]开始直至a[j-1]为止的元素,a[:j]表示从a[0]开始直至a[j-1]为止的元素,a[i:]表示从a[i]开始后的所有元素。
对于表示矩阵的2-维数组A,A[i,j]表示第i行第j列元素。其中,列标可缺省,意为所有列,行标不可缺省。A[i,:],或A[i]表示第i行元素,A[i:j]表示从第i行A[i]开始到第j-1行A[j-1]为止的各行,A[[i,j]]表示第i行A[i]和第j行A[j]。A[:,j]表示第j列元素,A[:,i:j]表示从第i列到第j-1列为止的各列,A[:,[i,j]]表示第i列A[:,i]和第j列A[:,j]。A[i:j,p:q]表示“块”第i行到第j-1行,第p列到第q-1列,如下图所示。
在这里插入图片描述
可以用下标序列的方法读取表示矩阵的2-维数组中的“块”,numpy还提供了两个将“小”矩阵粘结成“大”矩阵的函数hstack和vstack。前者将对干个行数相等的矩阵横向连接,其调用接口为
hstack((A,B,...)) \text{hstack((A,B,...))} hstack((A,B,...))
后者对若干个列数相同的矩阵纵向连接,调用接口为
vstack((A,B,...)). \text{vstack((A,B,...)).} vstack((A,B,...)).
例1 下列代码将矩阵 A = ( 1 0 0 0 0 1 0 0 − 1 2 1 0 1 1 0 1 ) \boldsymbol{A}=\begin{pmatrix}1&0&0&0\\0&1&0&0\\-1&2&1&0\\1&1&0&1\end{pmatrix} A=1011012100100001分成 4 4 4 2 × 2 2\times2 2×2小块:
A = ( I O A 1 I ) , \boldsymbol{A}=\begin{pmatrix}\boldsymbol{I}&\boldsymbol{O}\\\boldsymbol{A}_1&\boldsymbol{I}\end{pmatrix}, A=(IA1OI),
然后将它们粘合成
B = ( A 1 I I O ) = ( − 1 2 1 0 1 1 0 1 1 0 0 0 0 1 0 0 ) . \boldsymbol{B}=\begin{pmatrix}\boldsymbol{A}_1&\boldsymbol{I}\\\boldsymbol{I}&\boldsymbol{O}\end{pmatrix}=\begin{pmatrix}-1&2&1&0\\1&1&0&1\\1&0&0&0\\0&1&0&0\end{pmatrix}. B=(A1IIO)=1110210110000100.

python">import numpy as np                  #导入numpy
A=np.array([[1,0,0,0],              #设置矩阵
            [0,1,0,0],
            [-1,2,1,0],
            [1,1,0,1]])
I=A[:2,:2]                          #左上角块
O=A[:2,2:]                          #右上角块
A1=A[2:,:2]                         #左下角块
B=np.vstack((np.hstack((A1,I)),     #连接
             np.hstack((I,O))))
print(B)

利用代码内部的注释信息,不难理解该程序。运行输出

python">[[-1  2  1  0]
 [ 1  1  0  1]
 [ 1  0  0  0]
 [ 0  1  0  0]]

写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!


http://www.niftyadmin.cn/n/1462716.html

相关文章

线性代数Python计算:矩阵的线性运算

给定正整数mmm和nnn和数域PPP, ∀A(a11a12⋯a1na21a22⋯a2n⋮⋮⋯⋮am1am2⋯amn),B(b11b12⋯b1nb21b22⋯b2n⋮⋮⋯⋮bm1bm2⋯bmn)∈Pmn\forall\boldsymbol{A}\begin{pmatrix}a_{11}&a_{12}&\cdots&a_{1n}\\ a_{21}&a_{22}&\cdots&a_{2n}\\ …

百度逆地址解析 不准确_科目三:如何正确完成变道操作,全面解析,准确通过不扣分...

科目三的路考,更多的考核我们学员的心态以及对于实际开车的如何保证安全行驶的考核,在整个科目三的考试中,到处都是有关于细节处理的考核内容,那在科目三中无论是超车、红绿灯左转等情况下,经常被运用到的就是变道的操…

保存时间 默认_十大默认设置!提高PPT制作效率

绝大多数小伙伴制作PPT都讲究效率,什么下载模板啊、使用插件啊等等,根本目的都是为了高效地完成一份PPT。除了在制作过程中需要讲究高效外,其实在前期准备过程中,通过修改一些默认设置,同样有助于提升我们制作PPT的效率…

线性代数Python计算:矩阵的乘法

设n,m,l∈n,m,l\inn,m,l∈ℕ,PPP为一数域。 ∀A(a11a12⋯a1na21a22⋯a2n⋮⋮⋯⋮am1am2⋯amn)∈Pmn\forall\boldsymbol{A}\begin{pmatrix}a_{11}&a_{12}&\cdots&a_{1n}\\ a_{21}&a_{22}&\cdots&a_{2n}\\ \vdots&\vdots&\cdots&…

线性代数Python计算:矩阵的转置、方阵的行列式和方阵的逆

1.矩阵的转置 numpy用来表示矩阵的2维数组的array对象的T属性,返回矩阵的转置。 例1 设A(201132)\boldsymbol{A}\begin{pmatrix}2&0&1\\1&3&2\end{pmatrix}A(21​03​12​),B(17−1423201)\boldsymbol{B}\begin{pmatrix}1&7&-1…

python列表和数组的区别_简述python列表(list)与Numpy数组(ndarray)的区别 (10.0分)_学小易找答案...

【其它】5.1课堂内容 - 主键合并(4种连接方式)(图7)【其它】代码 4-62 (5.0分)【其它】代码3-9 (10.0分)【其它】5.1课堂内容 - 重叠合并数据(图9)【其它】代码 4-57 (5.0分)【其它】7. 增加列【其它】代码3-15 (10.0分)【其它】代码3-17 (5.0分)【填空题】写代码:通过列表[(1,…

线性代数Python计算:方阵的伴随阵

numpy的array对象是可以通过下标访问其某一片段的:长度为n的数组a,对0≤\leq≤i≤\leq≤j≤\leq≤n,a[i:j]表示片段 a[i],a[i1],⋯,a[j-1]\text{a[i],a[i1],$\cdots$,a[j…

电脑主板线路连接图解_教你如何连接主板路线图文教程

主板跳线连接方法揭秘主板跳线连接方法揭秘作为一名新手,要真正从头组装好自己的电脑并不容易,也许你知道CPU应该插哪儿,内存应该插哪儿,但遇到一排排复杂跳线的时候,很多新手都不知道如何下手。钥匙开机其实并不神秘还…