合并NumPy数组

9 投票
5 回答
59227 浏览
提问于 2025-04-16 21:48

我有两个大小为20x100x3的NumPy数组,我想把它们合并成一个40x100x3的数组,也就是简单地在数组中增加更多的行。我对应该使用哪个函数感到困惑:是vstack、hstack、column_stack,还是其他什么呢?

5 个回答

11

值得一提的是,

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

这是一个通用的写法,而vstack和hstack是具体的例子。我觉得最简单的方法就是先确定你想在哪个方向上进行合并,然后把这个方向作为参数传给np.concatenate。

15

学习的最好方法之一就是多尝试,但我想说你可以用 np.vstack,虽然还有其他方法可以做到同样的事情:

a = np.ones((20,100,3))
b = np.vstack((a,a)) 

print b.shape # (40,100,3)

或者

b = np.concatenate((a,a),axis=0)

补充说明

顺便提一下,在我电脑上,对于提问者问题中提到的数组大小,我发现 np.concatenate 的速度大约是 np.vstack 的两倍快。

In [172]: a = np.random.normal(size=(20,100,3))

In [173]: c = np.random.normal(size=(20,100,3))

In [174]: %timeit b = np.concatenate((a,c),axis=0)
100000 loops, best of 3: 13.3 us per loop

In [175]: %timeit b = np.vstack((a,c))
10000 loops, best of 3: 26.1 us per loop
26

我觉得你想要的是vstack。

p=array_2
q=array_2
p=numpy.vstack([p,q])

撰写回答