连接numpy矩阵以获得维度为3的数组

时间:2014-06-01 17:38:19

标签: 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]]]

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

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

3dim numpy数组的形状应为N1 x N2 x N3,而在您的情况下,每个“2dim行”的形状不同。

备选方案是将数据保存在列表(或数组列表)中,或者使用masked arrays,如果在您的情况下这恰好是合理的。

答案 1 :(得分:0)

如果np.ndarray,您只能以有用的方式转换为3D A.shape == B.shape。在这种情况下,您需要做的就是例如C = np.array([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

答案 2 :(得分:0)

由于AB具有不同的尺寸(行数),因此您可以做的最好的形状为(2,)和dtype object的数组。或者至少是一个简单的结构给你的东西:

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]

np.vstack([A,B])生成(5,4)数组。

np.array([A[:2,:],B])提供(2,2,4)数组。或者你可以填B所以它们都是(3,4)

因此,您需要重新定义问题。