我有一个包含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方法来做到这一点?
由于
答案 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个维度,而不是你的。