- Python数据分析从小白到专家
- 田越编著
- 306字
- 2021-05-19 18:13:42
4.2.4 拼合、划分一个矩阵
本节以元素为1到16的一个二维矩阵,以及上一节的三维矩阵为例进行介绍。之前已经学过如何用reshape()方法改变矩阵的形状,现在将学习更多方法来改变它的形状以得到某个需要的结果。例如,返回转置矩阵和返回所有元素,代码如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_92_2.jpg?sign=1739349963-IFDJHU1KH3AOQssfVS3EdVKdXWad4n7M-0-8755afcf91c217af084e21fe4d8b9173)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_93_1.jpg?sign=1739349963-CkZSpEfN2GVvDj0XJdxNq7zEkiWbQUEm-0-1784dec6f8eb3cc55ea5421a544d1162)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_93_2.jpg?sign=1739349963-GXpW9HdxCs2Z7HKaAs1sM1IQPCfp8FeI-0-d34169e8c6bae9776eadb1d243df9a0b)
矩阵的拼合分为行拼合(即将行拼合在一起使得列数变多,使用np.hstack()方法)和列拼合(即将列拼合在一起使得行数变多,使用np.vstack()方法),示例如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_93_3.jpg?sign=1739349963-9Mx9Utj23jre4aJkLtFePqK3BW9xBz62-0-141a5a914dc66ac64cd29c662dceab65)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_94_1.jpg?sign=1739349963-nEwOInjNE0adL6xWlFCtqspqo52LCVvq-0-3cc26768d32afef6d842d06ef6ce3136)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_94_2.jpg?sign=1739349963-pTfwsncWL9jfx5o5XYKmDRnzXrodvnu3-0-b1175b1946001956742a00264ada5853)
矩阵有拼合方法np.vstack()和np.hstack(),也有划分方法np.vsplit()和np.hsplit()。先来看使用行划分方法np.vsplit()的示例,该矩阵必须被均等划分,否则会报“array split does not result in an equal division”错误,代码如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_94_3.jpg?sign=1739349963-tbSnnmK4Jcj6foby0nJIzaOF4TadD1nq-0-e4036a4fb5d8b4def9b5215bd6eef870)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_95_1.jpg?sign=1739349963-c7p0Mv6flkS6XVKuWeSYL1kWVGWc0CAj-0-78d64dd3c5b49352b2ed739f9f11192b)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_95_2.jpg?sign=1739349963-mnW9bF5j9D6ok04xpSWREQnJAK6KFgrF-0-bf5063afb58451ae8748802360442943)
或者按照序号划分,示例如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_95_3.jpg?sign=1739349963-yFfW2KyQKFW68ky7GufOnntNoZlnH2mU-0-33ee9640a2e71089d312531977445e70)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_96_1.jpg?sign=1739349963-NXGcWbycrqaxX7fx2IJ92mWPyIaG3IoK-0-549cca704711446f374549b184a9cca5)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_96_2.jpg?sign=1739349963-6ifJjvUDRIE7mVXLwcUKPvbaVAk9Dkvi-0-e384edd26574c8a67007b730764b68a1)
再来看使用列划分方法np.hsplit()的示例,代码如下:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_96_3.jpg?sign=1739349963-sRkPYHIWjgoyox5H2HDKRtQOtxhxEITq-0-a5b968114414db11302a7b15e1a59ec4)
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_97_1.jpg?sign=1739349963-Wu6RKDAQkHZNkzbGDTrKl7xM9ftrV7sc-0-1845656b0becb9c1776b5164423183a9)
输出结果:
![](https://epubservercos.yuewen.com/ED1E6A/20118172701012106/epubprivate/OEBPS/Images/40923_97_2.jpg?sign=1739349963-PnfgJiGY7SlJqFIV35EbveADJecLgqJ6-0-4e1a42cb247a4ad8896d998b50b3fdab)