本文主要探索如何在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一樣,行列一起索引,得到的結果有點意外。如下圖所示:
所以,我們行和列分開取資料
b = a[:,
[0,1
]]b = b[[1
,3],
:]
結果如下圖:
這裡就是先把第1,2列取出來生成新陣列,然後在新陣列裡取出2,4行。當然行列取出的順序可以更換。
以上其實還是很簡單的,如果使用過matlab,可以說的很好理解的,但是就是這個python陣列索引,我居然搞了兩天,時刻懷念matlab。
indexerror: too many indices for array簡直讓你分分鐘崩潰,就是個陣列索引,python怎麼這麼會玩?typeerror: list indices must be integers or slices, not tuple
typeerror: only size-1 arrays can be converted to python scalars
1、首先注意我們是從陣列a裡獲得子陣列b,所以如果你a的格式(type)是列表(list)的話,你需要轉成陣列
a= np.array(a)
2、行索引和列索引的格式是列表,而不是陣列,轉換函式如下:
index = index.tolist(
);
3、如果上面兩個格式對了,但是還是報錯的話,你需要考慮一下,你**中類(class)裡的物件(object)裡的資料成員呼叫問題
首先,我們在方法__init__中定義了,很多資料成員,如self.feats = 。
然後,如果你在其他方法中要呼叫它的時候,又重新對他初始化,如上圖:
feats = feats +
2
再對其進行運算時,可能就報錯了。
所以,在呼叫這些資料時,全部從類中匯出,比如
self.feats = self.feats +
2
這樣就避免了很多問題~
猜你喜歡:??⭐【matlab】矩陣中選取任意子矩陣
⭐【matlab】乙個超簡單的生成順序陣列的方法
MySQL普通索引和唯一索引到底什麼區別
普通索引可重複,唯一索引和主鍵一樣不能重複。唯一索引可作為資料的乙個合法驗證手段,例如學生表的身份證號碼字段,我們人為規定該欄位不得重複,那麼就使用唯一索引。一般設定學號字段為主鍵 主鍵保證db的每一行都是唯 一 不重複,比如身份證,學號等,不重複。唯一索引的作用跟主鍵一樣。不同的是,在一張表裡面只...
資料庫索引到底是什麼鬼?
進行後端開發經常會與資料庫打交道,對於資料庫的一些核心基礎了解太淺,比如經常聽到的資料庫索引 鎖等,在小專案開發過程中也沒有過於嚴格的執行索引的建立,而是想當然的對錶直接設定乙個自增字段作為主鍵,這些還是源於對於索引的認識不夠深喃。在此之前,對於索引的認識如下 索引相當於一張表的附加表,儲存著表中建...
資料庫索引到底是什麼,是怎樣工作的?
我們通過乙個簡單的例子來開始教程,解釋為什麼我們需要資料庫索引。假設我們有乙個資料庫表 employee,這個表有三個字段 列 分別是 employee name employee age 和employee address。假設表employee 有上千行資料。現在假設我們要從這個表中查詢出所有名...