连接作为列表元素的 numpy 数组
concatenate numpy arrays which are elements of a list
我有一个列表,其中包含类似于 L=[a,b,c] 的 numpy 数组,其中 a、b 和 c 是 numpy 数组,T 中的大小为 N_a,T 中的大小为 N_b,并且N_c 在 T.
我想按行连接 a、b 和 c 并得到一个形状为 (N_a+N_b+N_c, T) 的 numpy 数组。显然,一种解决方案是 运行 一个 for 循环并使用 numpy.concatenate,但是有没有任何 pythonic 方法可以做到这一点?
谢谢
使用numpy.vstack
.
L = (a,b,c)
arr = np.vstack(L)
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 个维度,而您的维度也是如此。
我有一个列表,其中包含类似于 L=[a,b,c] 的 numpy 数组,其中 a、b 和 c 是 numpy 数组,T 中的大小为 N_a,T 中的大小为 N_b,并且N_c 在 T.
我想按行连接 a、b 和 c 并得到一个形状为 (N_a+N_b+N_c, T) 的 numpy 数组。显然,一种解决方案是 运行 一个 for 循环并使用 numpy.concatenate,但是有没有任何 pythonic 方法可以做到这一点?
谢谢
使用numpy.vstack
.
L = (a,b,c)
arr = np.vstack(L)
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 个维度,而您的维度也是如此。