考虑一下代码
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);
Run Code Online (Sandbox Code Playgroud)
我是numpy并且学习它的新手.我想以下面的方式创建一个块矩阵
RowBlock1=np.concatenate((A11,A12),axis=1)
RowBlock2=np.concatenate((A21,A22),axis=1)
Block=np.concatenate((RowBlock1,RowBlock2),axis=0)
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?例如:,在matlab中我会这样做
Block=[[A11,A12];[A21,A22]]
Run Code Online (Sandbox Code Playgroud)
并将完成它.我知道这仅保留给数组.
use*_*ica 10
从NumPy 1.13开始,有numpy.block:
Block = numpy.block([[A11, A12], [A21, A22]])
Run Code Online (Sandbox Code Playgroud)
对于以前的版本,有bmat:
Block = numpy.bmat([[A11, A12], [A21, A22]])
Run Code Online (Sandbox Code Playgroud)
numpy.bmat创建一个矩阵,而不是一个数组.这通常是件坏事.asarray如果需要数组,可以调用结果,或者使用A属性:
Block = numpy.bmat([[A11, A12], [A21, A22]]).A
Run Code Online (Sandbox Code Playgroud)
bmat 还有一些搞乱堆栈帧,让你这样做:
Block = numpy.bmat('A11,A12; A21,A22')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |