合并NumPy数组
我有两个大小为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])