numpy的concatenate實現矩陣拼接


concatenate()

我們先來介紹最全能的concatenate()函數,后面的幾個函數其實都可以用concatenate()函數來進行等價操作。

concatenate()函數根據指定的維度,對一個元組、列表中的list或者ndarray進行連接,函數原型:

numpy.concatenate((a1, a2, ...), axis=0)

先來看幾個例子,一個2*2的數組和一個1*2的數組,在第0維進行拼接,得到一個3*2的數組:

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

輸出為:

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

進一步,一個2*2的數組和一個2*1的數組,在第01維進行拼接,得到一個2*3的數組:

np.concatenate((a, b.T), axis=1)

輸出為:

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

上面兩個簡單的例子中,拼接的維度的長度是不同的,但是其他維度的長度必須是相同的,這也是使用concatenate()函數的一個基本原則,違背此規則就會報錯,例如一個2*2的數組和一個1*2的數組,在第1維進行拼接:

np.concatenate((a, b), axis=1)

上面的代碼會報錯:

ValueError: all the input array dimensions except for the concatenation axis must match exactly 
 
如果拼接的數組是一維數組,則axis只能為0,因為若兩個一維數組的shape為(n1,),(n2,), 拼接之后為(n1+n2,)。由於第二維沒有長度,所以也就不存在axis=1了

作者:文哥的學習日記
鏈接:https://www.jianshu.com/p/cfe655cb5dd6
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM