用numpy中的单个块创建块矩阵的更好方法?

2024-06-16 13:50:30 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一下代码

M=5;N=3;
A11=np.random.rand(M,M);
A12=np.random.rand(M,N);
A21=np.random.rand(N,M);
A22=np.random.rand(N,N);

我是新来的努比和学习它。我想用以下方式创建一个块矩阵

RowBlock1=np.concatenate((A11,A12),axis=1)
RowBlock2=np.concatenate((A21,A22),axis=1)
Block=np.concatenate((RowBlock1,RowBlock2),axis=0)

有更简单的方法吗?例如:在matlab中,我可以

Block=[[A11,A12];[A21,A22]]

就这样了。我知道这是只为数组保留的。


Tags: 代码np方式randomblockaxisranda21
1条回答
网友
1楼 · 发布于 2024-06-16 13:50:30

从1.13开始,有^{}

Block = numpy.block([[A11, A12], [A21, A22]])

对于以前的版本,有^{}

Block = numpy.bmat([[A11, A12], [A21, A22]])

numpy.bmat创建矩阵,而不是数组。这通常是件坏事。如果需要数组,可以对结果调用asarray,或者使用^{} attribute

Block = numpy.bmat([[A11, A12], [A21, A22]]).A

bmat还对堆栈帧进行了一些修改,以便执行以下操作:

Block = numpy.bmat('A11,A12; A21,A22')

相关问题 更多 >