【Python】数组索引到底怎么整?
本文主要探索如何在python中獲得一個數組里的指定行和列(子數組)。
【生成數組】
我們要獲得子數組,首先得生成一個數組,這里調用python里的numpy庫,生成一個5行3列的順序順組。
import numpy as np a = np.arange(15).reshape((5, 3))結果如下圖:
【獲得子數組索引】
比如我們要取出 a 數組中的第2,4行和第1,2列生成數組 b ,數組 b 如下圖所示:
由于python中數組的索引是從0開始的,那么此時我們的行索引就是[1,3],列索引就是[0,1]。
【使用索引取數據】
如果直接像matlab一樣,行列一起索引,得到的結果有點意外。如下圖所示:
所以,我們行和列分開取數據
結果如下圖:
這里就是先把第1,2列取出來生成新數組,然后在新數組里取出2,4行。當然行列取出的順序可以更換。
【BUG】
以上其實還是很簡單的,如果使用過matlab,可以說的很好理解的,但是就是這個python數組索引,我居然搞了兩天,時刻懷念matlab。
大家注意,上面這些是在命令行里執行的,如果放到代碼中,可能會出現以下問題:
IndexError: too many indices for array
TypeError: list indices must be integers or slices, not tuple
TypeError: only size-1 arrays can be converted to Python scalars
簡直讓你分分鐘崩潰,就是個數組索引,python怎么這么會玩?
【DEBUG】
1、首先注意我們是從數組 a 里獲得子數組 b ,所以如果你 a 的格式(type)是列表(list)的話,你需要轉成數組
a= np.array(a)2、行索引和列索引的格式是列表,而不是數組,轉換函數如下:
Index = Index.tolist();3、如果上面兩個格式對了,但是還是報錯的話,你需要考慮一下,你代碼中類(class)里的對象(object)里的數據成員調用問題
首先,我們在方法__init__中定義了,很多數據成員,如self.feats = []。
然后,如果你在其他方法中要調用它的時候,又重新對他初始化,如上圖:
再對其進行運算時,可能就報錯了。
所以,在調用這些數據時,全部從類中導出,比如
self.feats = self.feats + 2這樣就避免了很多問題~
猜你喜歡:👇🏻
?【Python】查找目標值在列表中的索引序號
?【Python】選取二維列表的第一列
?【Matlab】矩陣中選取任意子矩陣
總結
以上是生活随笔為你收集整理的【Python】数组索引到底怎么整?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何把项目部署到云服务器上,如何把项目部
- 下一篇: 基于小波变换的图像边缘检测(matlab