将 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
,但省去了您自己重复它的麻烦(并且看起来更干净,适合更大的用法)。
如何将以下用于矩阵连接的 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
,但省去了您自己重复它的麻烦(并且看起来更干净,适合更大的用法)。