numpy.concatenate((a1, a2, ...), axis=0)
1、測試代碼
a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6]]) b是一個二維array np.concatenate((a, b), axis=0)
結果
array([[1, 2], [3, 4], [5, 6]])
結論:列數必須相同,添加新的一行
2、測試代碼
np.concatenate((a, b.T), axis=1)
結果
array([[1, 2, 5], [3, 4, 6]])
結論:將b轉置后添加新的一列
3、測試代碼
a = np.array([[1, 2], [3, 4]]) a、b的shape為(2,2),連接第一維就變成(4,2),連接第二維就變成(2,4) b = np.array([[5, 6], [7, 8]]) np.concatenate((a,b),axis=0)
結果:4行2列
array([[1, 2], [3, 4], [5, 6],
[7, 8]])
4、測試代碼
c = np.concatenate((a,b),axis=1)
c.shape #查看c的維數大小
結果:2行4列
array([[1, 2, 5, 6], [3, 4, 7, 8]]) (2, 4)
5、高維數的連接(例如我之前使用matlab寫的hd5格式的數據)
concatenate([a, b])
連接,連接后ndim不變,a和b可以有一維size不同,但size不同的維度必須是要連接的維度
例如,a.shape為(4,5,6,10),b.shape為(4,5,6,20)
np.concatenate([a,b], axis=3) # 返回張量的shape為(4,5,6,30) 有助於理解的例子。第一個例子是一維的,這一維全是數字,第二個例子是二維的,實際上可以看作將數字換成向量的一維的array。第一個例子axis=0把所有的數字 連接,第二個例子axis=0就可以把所有的向量連接。第二個例子中axis=1,這表明axis=0的個數不發生變化,只變化axis=1。axis=0不發生變化,那兩個array對 應的axis=0的元素就可以進行連接。這兩個array中的元素是一維向量,就對一維向量進行連接(其實這時候就相當於第一個例子中的連接了)。 若把axis=1中的數字換成一維向量就可以推廣到3維的axis=1時的變化,若換到更高維可以推廣到更高維的變化。