【问题标题】:Translate Matlab matrix concatenation to Python将 Matlab 矩阵连接转换为 Python
【发布时间】:2019-11-27 14:09:09
【问题描述】:

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

【问题讨论】:

  • 你试过np.concatenate()吗?
  • 我确实在另一个位置使用 np concatenate 来附加列连接。它也可能适用于这里。让我看几分钟..

标签: python matlab matrix concatenation translate


【解决方案1】:

这应该可以解决问题。

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

【讨论】:

【解决方案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,但省去了你自己重复它的麻烦(并且对于更大的用法看起来更干净)。

【讨论】:

    猜你喜欢
    • 2017-03-10
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多