我有這樣一個數組:數組切片/ SciPy的
a = array([[1,2,3],[3,4,5],[4,5,6]])
什麼是切出一個1x2的陣列出這一點,只有「一」的前兩列的最有效方法是什麼?
即,
array([[2,3],[4,5],[5,6]]) in this case.
感謝。
我有這樣一個數組:數組切片/ SciPy的
a = array([[1,2,3],[3,4,5],[4,5,6]])
什麼是切出一個1x2的陣列出這一點,只有「一」的前兩列的最有效方法是什麼?
即,
array([[2,3],[4,5],[5,6]]) in this case.
感謝。
二維numpy的陣列使用a[i,j]
(不a[i][j]
)收錄,但你可以使用Python普通矩陣您可以使用相同的切片符號與numpy的陣列和矩陣(只是把它們放在一個[]
) :
>>> from numpy import array >>> a = array([[1,2,3],[3,4,5],[4,5,6]]) >>> a[:,1:] array([[2, 3], [4, 5], [5, 6]])
這個規則是否僅適用於二維數組? – 2016-06-19 10:27:40
@IvanBalashov不,你也可以使用它來獲得更高的維度。 – Demento 2017-09-23 17:39:21
這是你在找什麼?
a[:,1:]
或者換言之(引述documentation) 基本切片語法是I:Y:k,其中i是起始索引,j是停止索引,而k是步驟(k> 0 )
現在,如果'i'沒有被給出,則對於k> 0,其缺省值爲0,對於k < 0,缺省值爲0。如果j沒有給出,它默認爲n。
這就是一維數組。 現在二維數組是不同的野獸。切片語法是[rowrange,columnrange]
所以如果你想要所有的行,但只是最後兩列,就像你的情況,你做 a [0:3,1:3]。
這裏[0:3]是指所有從0行3和[1:3]是指從第1列的所有列列現在3
,你可能不知道,即使你只有3列,編號從1開始,因此技術上這個命令必須返回3列。即第1列第2列第3列。這是該語法中棘手的部分。你必須從第一個數字開始計算。所以當你說[1:3]時,你實際上是在給我列第2列和第3列。哪一列是你想要的最後兩列。
現在,如果您不知道矩陣的長度是多少,或者您想要所有行,那麼可以將該部分留空。 即
a [:,1:3]也將起作用。
列也一樣。也就是說,如果你想要說的,所有的列,但只在第一行,你會寫
一個[0:1 ,:]
現在,如何在上面的回答[:,1:]的作品是因爲當你說列[1:],這意味着在第一列之後給我任何東西,直到所有列結束。即空虛意味着'直到結束'。
現在你必須認識到,逗號兩邊的任何東西都是我上面首先提到的一維情況的一個子集。一世。e如果您想使用的步長指定你行,你可以寫一個 [:: 2,1]
而你的情況將返回 陣列([2,3], [5,6] )
即命令闡明爲:給我所有的行,一次取2。另外給我只有最後2列。
這花了我一些時間弄清楚。所以粘貼在這裏,以防萬一有人幫助。
這個例子如何導致你的Q「1x2」...?它是如何具有_first_兩列的?我一定很困惑... – 2010-04-28 01:43:13
@亞歷克斯:看到結果我期望他的意思是最後兩列:) 和1x2 ...好。有2個元素的3個數組,你可以看到它;)你完全正確,但是,+1 – Wolph 2010-04-28 01:49:09
是的,我認爲這是一個錯字。修復它 – mithunpaul 2017-09-24 21:37:33