结合NumPy数组

Dou*_* AA 9 python arrays numpy

我有两个20x100x3 NumPy阵列,我希望将它们组合成一个40 x 100 x 3阵列,也就是说,只需在阵列中添加更多行.我对我想要的功能感到困惑:它是vstack,hstack,column_stack还是其他什么东西?

小智 27

我相信这是你想要的vstack

p=array_2
q=array_2
p=numpy.vstack([p,q])
Run Code Online (Sandbox Code Playgroud)


Jos*_*del 15

最好的学习方法之一就是试验,但我会说你想要,np.vstack尽管还有其他方法可以做同样的事情:

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

print b.shape # (40,100,3)
Run Code Online (Sandbox Code Playgroud)

要么

b = np.concatenate((a,a),axis=0)
Run Code Online (Sandbox Code Playgroud)

编辑

就像一个注释,在OP的问题中,我的机器上的大小数组,我发现它np.concatenate比大约快2倍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
Run Code Online (Sandbox Code Playgroud)


i3e*_*min 10

可能值得一提

    np.concatenate((a1, a2, ...), axis=0) 
Run Code Online (Sandbox Code Playgroud)

是一般形式,vstack和hstack是特定情况.我发现最容易知道我想要堆叠哪个维度并将其作为np.concatenate的参数提供.