Python 合并numpy矩阵以获得维数为3的数组

Python 合并numpy矩阵以获得维数为3的数组,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,我想连接具有不同形状的numpy矩阵,以获得维数为3的数组。 例如: A= [[2 1 3 4] [2 4 0 6] [9 5 7 4]] B= [[7 2 8 4] [8 6 8 6]] 结果我需要的应该是: C=[[[2 1 3 4] [2 4 0 6] [9 5 7 4]] [[7 2 8 4] [8 6 8 6]]] 感谢您的帮助如果我正确理解您的问题,3dim numpy数组可能不是表示数据的方式,因为没有确定的形状 3dim

我想连接具有不同形状的numpy矩阵,以获得维数为3的数组。 例如:

A= [[2 1 3 4]
    [2 4 0 6]
    [9 5 7 4]]
B= [[7 2 8 4]
    [8 6 8 6]]
结果我需要的应该是:

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

感谢您的帮助

如果我正确理解您的问题,3dim numpy数组可能不是表示数据的方式,因为没有确定的形状

3dim numpy数组的形状应为N1 x N2 x N3,而在您的示例中,每个“2dim行”的形状不同


另一种选择是将数据保存在列表(或数组列表)中,或者使用,如果这在您的情况下是合理的。

只有在
a.shape==B.shape
的情况下,您才能以有用的方式转换为3D
np.ndarray
。在这种情况下,您需要做的就是,例如,
C=np.array([A,B])


因为
A
B
有不同的大小(#行),所以您最好创建一个shape
(2,)
和dtype
对象的数组。或者至少这是一个简单的构造给你的:

In [9]: np.array([A,B])
Out[9]: 
array([array([[2, 1, 3, 4],
       [2, 4, 0, 6],
       [9, 5, 7, 4]]),
       array([[7, 2, 8, 4],
       [8, 6, 8, 6]])], dtype=object)
但是构建这样的数组并没有多大帮助。只需使用列表
[A,B]

import numpy as np
A = np.array([[2, 1, 3, 4],
              [9, 5, 7, 4]])
B = np.array([[7, 2, 8, 4],
              [8, 6, 8, 6]])

C = np.array([A, B])
print C
np.vstack([A,B])
生成一个
(5,4)
数组

np.数组([A[:2,:],B])
给出一个
(2,2,4)
数组。或者你可以填充
B
,这样它们都是
(3,4)


所以,不管怎样,你都需要重新定义你的问题。

是的,你是对的,对不起,不应该是一个3D numpy数组!也许最好说我正在寻找一个矩阵数组,或者连接具有不同形状的不同矩阵