在Python中如何将两个2D数组组合成以下内容?
假设我有2个二维数组,如下所示:在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]] 谢谢您可以开发自己的程序来实现这一点,应
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]]
谢谢您可以开发自己的程序来实现这一点,应该不会太难 以下是一些开始步骤:
您可以开发自己的程序来实现这一点,这应该不会太难 以下是一些开始步骤:
如果你想做很多线性代数运算,/将是你的朋友。对于创建块对角矩阵的特殊问题,请节省时间:
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()”是我要找的。