在Python中如何将两个2D数组组合成以下内容?

在Python中如何将两个2D数组组合成以下内容?,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,假设我有2个二维数组,如下所示: 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]] 谢谢您可以开发自己的程序来实现这一点,应

假设我有2个二维数组,如下所示:

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

谢谢

您可以开发自己的程序来实现这一点,应该不会太难

以下是一些开始步骤:

  • 前面在A的所有元素中附加0,后面在B的所有元素中附加0,使其长度相等

  • 然后简单地在结果矩阵中填入A和B的值


  • 您可以开发自己的程序来实现这一点,这应该不会太难

    以下是一些开始步骤:

  • 前面在A的所有元素中附加0,后面在B的所有元素中附加0,使其长度相等

  • 然后简单地在结果矩阵中填入A和B的值


  • 如果你想做很多线性代数运算,/将是你的朋友。对于创建块对角矩阵的特殊问题,请节省时间:

    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),如果您只想使用vanilla Python,假设所有块都是方形的,您可以执行以下操作

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

    如果你想做很多线性代数运算,/将是你的朋友。对于创建块对角矩阵的特殊问题,请节省时间:

    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),如果您只想使用vanilla Python,假设所有块都是方形的,您可以执行以下操作

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

    在字符串周围加引号会杀了你吗?显然,最好的方法是尝试编写一个解决方案。事实上,你应该试试看。或者至少展示一下你尝试了什么,哪里不起作用,你的确切问题是什么。我们帮助您解决代码问题,通常我们不提供全面的解决方案。嗨,帕特里克,谢谢您的回复。我可以从头开始设计这个解决方案,但是我正在寻找一个可以实现这个功能的numpy函数,而不是重新设计轮子。在字符串周围加引号会让你丧命吗?显然,最好的方法是尝试编写一个解决方案。事实上,你应该试试看。或者至少展示一下你尝试了什么,哪里不起作用,你的确切问题是什么。我们帮助您解决代码问题,通常我们不提供全面的解决方案。嗨,帕特里克,谢谢您的回复。我可以从头开始设计这个解决方案,但是我正在寻找一个numpy函数来实现这个功能,而不是重新设计轮子。谢谢。“scipy.linalg.block_diag()”是我要找的。谢谢。“scipy.linalg.block_diag()”是我要找的。