将 Matlab 矩阵串联转换为 Python

Translate Matlab matrix concatenation to Python

如何将以下用于矩阵连接的 matlab 代码翻译成 python?

nr_a = 10;
nc_a = 23;
nr_b = 500;
a = zeros(nr_a, nc_a);
b = zeros(nr_b, nc_a - 1);
c = zeros(nr_b, 1);
d = [ a; b c];

在python中,d.shape应该等于(nr_a+nr_b,nc_a)。 我不正确的 python 解决方案是

d = np.block([a, [b, c]])

这应该可以解决问题。

import numpy as np

nr_a = 10
nc_a = 23
nr_b = 500
a = np.zeros((nr_a, nc_a))
b = np.zeros((nr_b, nc_a - 1))
c = np.zeros((nr_b, 1))
d = np.concatenate((a, np.concatenate((b, c), axis=1)))

np.block 还要求您在列表中包装 a,如下所示:

import numpy as np

nr_a = 10
nc_a = 23
nr_b = 500
a = np.zeros((nr_a, nc_a))
b = np.zeros((nr_b, nc_a - 1))
c = np.zeros((nr_b, 1))
d = np.block([[a], [b, c]])

print(d.shape)

输出:

(510, 23)

在内部它只是递归地使用 concatenate,但省去了您自己重复它的麻烦(并且看起来更干净,适合更大的用法)。