将Matlab矩阵串联转换为Python

时间:2019-07-18 15:22:55

标签: python matlab matrix concatenation translate

如何将以下用于矩阵连接的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]])

2 个答案:

答案 0 :(得分:3)

这应该可以解决问题。

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)))

答案 1 :(得分:2)

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,但省却了您自己重复的麻烦(并且看起来更干净,适用于更大的用途)。