Python 如何从其他几个矩阵创建一个矩阵?
我对连接几个矩阵有问题。假设我有四个矩阵A,B,C,D,我想把它们连接起来,得到一个新的矩阵Python 如何从其他几个矩阵创建一个矩阵?,python,numpy,Python,Numpy,我对连接几个矩阵有问题。假设我有四个矩阵A,B,C,D,我想把它们连接起来,得到一个新的矩阵 M = A B C D 如何使用python numpy实现这一点?考虑到所有组件都具有相同的维度,下面是一个示例: >>> A = np.arange(4).reshape(2,2) >>> B, C, D = A*2, (A+1), (A+2) >>> M = np.array([[A,B],[C,D]]) >>> M
M = A B
C D
如何使用python numpy实现这一点?考虑到所有组件都具有相同的维度,下面是一个示例:
>>> A = np.arange(4).reshape(2,2)
>>> B, C, D = A*2, (A+1), (A+2)
>>> M = np.array([[A,B],[C,D]])
>>> M
array([[[[0, 1],
[2, 3]],
[[0, 2],
[4, 6]]],
[[[1, 2],
[3, 4]],
[[2, 3],
[4, 5]]]])
或者如果你想要这样的东西:
>>> M = np.concatenate([np.concatenate([A,B],axis = 1),np.concatenate([C,D],axis = 1)],axis = 0)
>>> M
array([[0, 1, 0, 2],
[2, 3, 4, 6],
[1, 2, 2, 3],
[3, 4, 4, 5]])
使用NumPy的和函数,只要两个行数和/或列数匹配,就可以从任何A
、B
、C
、D
生成M
。请参见以下示例:
将numpy导入为np
A=np.random.rand(3,2)#(3 x 2)
B=np.random.rand(3,4)#(3 x 4)
C=np.random.rand(4,3)#(4 x 3)
D=np.random.rand(4,3)#(4 x 3)
打印(A,“\n”)
打印(B,“\n”)
打印(C,“\n”)
打印(D,“\n”)
M=np.vstack((np.hstack((A,B)),np.hstack((C,D)))
#(3 x 6)(4 x 6)
#(7 x 6)
打印(M)
输出:
[[0.60220154 0.77067838]
[0.7623169 0.54727146]
[0.20570341 0.56939493]]
[[0.322524 0.35260186 0.6581785 0.55662823]
[0.32034862 0.68664386 0.96432518 0.03410233]
[0.72779584 0.6705618 0.66460412 0.104223 ]]
[[0.20194483 0.49971436 0.50618483]
[0.89040491 0.25118623 0.67831283]
[0.30631334 0.69515443 0.70941023]
[0.41324506 0.23127909 0.29241595]]
[[0.0015009 0.43205507 0.08500188]
[0.48506546 0.46448833 0.61393518]
[0.51163779 0.81914233 0.21293481]
[0.33713576 0.33953848 0.9909197 ]]
[[0.60220154 0.77067838 0.322524 0.35260186 0.6581785 0.55662823]
[0.7623169 0.54727146 0.32034862 0.68664386 0.96432518 0.03410233]
[0.20570341 0.56939493 0.72779584 0.6705618 0.66460412 0.104223 ]
[0.20194483 0.49971436 0.50618483 0.0015009 0.43205507 0.08500188]
[0.89040491 0.25118623 0.67831283 0.48506546 0.46448833 0.61393518]
[0.30631334 0.69515443 0.70941023 0.51163779 0.81914233 0.21293481]
[0.41324506 0.23127909 0.29241595 0.33713576 0.33953848 0.9909197 ]]
如果A
/C
和B
/D
的列数匹配,并且这些连接的行数相等,则可以切换vstack
和hstack
希望有帮助 你能定义一下加入的类型吗?您想将一个矩阵附加到另一个矩阵还是其他矩阵?另请查看
np.block
谢谢!现在我感兴趣的是,如果它们的维度不同怎么办?你可以连接它们
,只要它们在连接后是相同的。否则,您需要声明一个zero
数组,然后用索引填充该位置。实际上,您可以执行相同的操作(答案中的第一个方法),而不必担心维度,它将成为对象
数组。然而,你需要小心这是否是你想要的。