Python 陣列索引到底怎麼整?

2021-10-04 10:42:25 字數 2013 閱讀 1119

本文主要探索如何在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

typeerror: list indices must be integers or slices, not tuple

typeerror: only size-1 arrays can be converted to python scalars

簡直讓你分分鐘崩潰,就是個陣列索引,python怎麼這麼會玩?

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 有上千行資料。現在假設我們要從這個表中查詢出所有名...