Python中numpy数组的合并有很多方法,如
np.append()
np.concatenate()
np.stack()
np.hstack()
np.vstack()
np.dstack()
其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题。
假设有两个数组a,b分别为:
>>> a array([0, 1, 2], [3, 4, 5], [6, 7, 8]) >>> b = a*2 >>> b array([ 0, 2, 4], [ 6, 8, 10], [12, 14, 16])
只听到从知秋君办公室传来知秋君的声音: 画帘遮匝,新翻曲妙,暗许闲人带偷掐。有谁来对上联或下联?
1、水平组合
此代码由一叶知秋网-知秋君整理
>>> np.hstack((a,b)) array([ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]) >>> np.concatenate((a,b),axis=1) array([ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16])
2、垂直组合
>>> np.vstack((a,b)) array([ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]) >>> np.concatenate((a,b),axis=0) array([ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16])
3、深度组合:沿着纵轴方向组合
此代码由一叶知秋网-知秋君整理
>>> np.dstack((a,b)) array([[ 0, 0], [ 1, 2], [ 2, 4], [ 3, 6], [ 4, 8], [ 5, 10], [ 6, 12], [ 7, 14], [ 8, 16]])
4、列组合column_stack()
一维数组:按列方向组合
二维数组:同hstack一样
5、行组合row_stack()
以为数组:按行方向组合
二维数组:和vstack一样
6、“==”用来比较两个数组
>>> a==b array([ True, False, False], [False, False, False], [False, False, False], dtype=bool) #True那个因为都是0