python中numpy的stack、vstack、hstack、concatenate

np.stack

在某一维度上进行堆叠
axis=0 则和原来的array相同
axis=1

arrays = [[1,2,3,4], [5,6,7,8]]
arrays=np.array(arrays)
np.stack(arrays, axis=1)

结果如下

array([[1, 5],
[2, 6],
[3, 7],
[4, 8]])

把哪个维度上的数据打包当成一个整体,然后堆叠起来

np.concatenate

np.concatenate((a1,a2,a3,…), axis=0),这个函数就是按照特定方向轴进行拼接,默认是第一维

>>> a = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])
>>> b = np.array([[[1,2,3],[4,5,6]]])
>>> np.concatenate((a, b), axis=0)

array([[[1, 2, 3],
        [4, 5, 6]],
 
       [[1, 2, 3],
        [4, 5, 6]],
 
       [[1, 2, 3],
        [4, 5, 6]]])

这里a的shape为(2,2,3),b的shape为(1,2,3),axis=0则要求a,b在其他两维的形状是一致的,如果直接在其他维度进行concatenate操作则会报错(因为axis=1时,a和b在第一维的长度不一致):

np.hstack

按照列的方向堆叠, 可以是元组,列表,或者numpy数组, 其实也就是axis=1,即

np.vstack

np.vstack(tup), 按照行的方向堆叠, tup可以是元组,列表,或者numpy数组, 理解起来与上相同

np.dstack

np.dstack(tup), 按照第三维方向堆叠

np.column_stack和np.row_stack

np.column_stack函数将一维的数组堆叠为二维数组,方向为列,相当于np.hstack

np.row_stack函数将一维的数组堆叠为二维数组,方向为行,相当于np,vstack

原文https://blog.csdn.net/qq_26414307/article/details/79317965

猜你喜欢

转载自blog.csdn.net/qq_30339595/article/details/86645059