连接作为列表元素的numpy数组

时间:2015-01-24 12:02:31

标签: python arrays list numpy

我有一个包含numpy数组的列表,例如L = [a,b,c]其中a,b和c是n个数组,其中T的大小为N_a,T的N_b和T的N_c 我想逐行连接a,b和c并得到一个形状为numpy的数组(N_a + N_b + N_c,T)。很明显,一个解决方案是运行for循环并使用numpy.concatenate,但有没有任何pythonic方法来做到这一点?

由于

2 个答案:

答案 0 :(得分:28)

使用numpy.vstack

L = (a,b,c)
arr = np.vstack(L)

答案 1 :(得分:5)

help('concatenate'有这个签名:

concatenate(...)
    concatenate((a1, a2, ...), axis=0)

    Join a sequence of arrays together.

(a1, a2, ...)看起来像你的名单,不是吗?默认轴是您要加入的轴。所以试试吧:

In [149]: L = [np.ones((3,2)), np.zeros((2,2)), np.ones((4,2))]

In [150]: np.concatenate(L)
Out[150]: 
array([[ 1.,  1.],
       [ 1.,  1.],
       [ 1.,  1.],
       [ 0.,  0.],
       [ 0.,  0.],
       [ 1.,  1.],
       [ 1.,  1.],
       [ 1.,  1.],
       [ 1.,  1.]])

vstack也会这样做,但请查看其代码:

def vstack(tup):
    return np.concatenate([atleast_2d(_m) for _m in tup], 0)

所有它的额外功能是确保组件数组具有2个维度,而不是你的。