如何将两个二维数组组合成在Python以下?(How to combine two 2D array

2019-10-30 02:55发布

假设我有2 2D阵列如下:

A = [[1, 2],
     [3, 4]]

B = [[5, 6, 7],
     [8, 9, 8],
     [7, 6, 5]]

是否有一个numpy的功能,以A和B合并成C如下?

C = [[1, 2, 0, 0, 0],
     [3, 4, 0, 0, 0],
     [0, 0, 5, 6, 7],
     [0, 0, 8, 9, 8],
     [0, 0, 7, 6, 5]]

谢谢

Answer 1:

如果您希望将使得许多线性代数运算, 与NumPy / SciPy的将是你的朋友。 创建块对角矩阵的特殊问题, scipy.linalg.block_diag节省了一天:

In [14]: from scipy.linalg import block_diag

In [16]: A = [[1, 2],
    ...:      [3, 4]]
    ...:

In [17]: B = [[5, 6, 7],
    ...:      [8, 9, 60],
    ...:      [10, 20, 0]]
    ...:

In [18]: block_diag(A, B)
Out[18]:
array([[ 1,  2,  0,  0,  0],
       [ 3,  4,  0,  0,  0],
       [ 0,  0,  5,  6,  7],
       [ 0,  0,  8,  9, 60],
       [ 0,  0, 10, 20,  0]], dtype=int32)

否则(编辑:提的是,它的原始形式的问题实际上并没有指定所需的解决方案涉及NumPy的),如果你只是想用香草Python来做到这一点,假设所有块是正方形的,你可以这样做

[a + [0]*len(B) for a in A] + [[0]*len(A) + b for b in B]


Answer 2:

你可以开发自己的程序要做到这一点,应该不会太困难。

这里有一些开始的步骤:

  1. 前面附加0在A的所有elemnts和背面追加0在B的所有元素,使它们的长度相等。

  2. 然后简单地在所得到的矩阵填写A和B的值。



文章来源: How to combine two 2D array into the following in Python?