numpy陣列的切片

2021-08-19 18:08:29 字數 1555 閱讀 2061

個人學習筆記!

切片語法:

x[ start : stop : step ]

一、一維陣列的切片

import numpy as np

x = np.arange(5,13)

xout[4]:array([ 5, 6, 7, 8, 9, 10, 11, 12])

x[:3]#前3個元素,即索引0~2所代表的元素

out[6]:array([5, 6, 7])

x[3:]#索引3及往後的所有元素

out[7]:array([ 8, 9, 10, 11, 12])

x[::2]#每隔乙個元素

out[8]:array([ 5, 7, 9, 11])

x[::-1]#陣列元素逆序

out[9]:array([12, 11, 10, 9, 8, 7, 6, 5])

二、多維陣列的切片

以二維為例:

import numpy as np

x=np.random.randint(0,11,(3,4))

xout[12]:

array([[2, 7, 3, 0],

[1, 1, 0, 1],

[4, 3, 0, 6]])

x[:2,:3]#前兩行,前三列

out[13]:

array([[2, 7, 3],

[1, 1, 0]])

x[::-1,::-1]#陣列所有元素逆序

out[15]:

array([[6, 0, 3, 4],

[1, 0, 1, 1],

[0, 3, 7, 2]])

#獲取二維陣列的單行和單列:索引+切片

x[:,1]#第2列

out[16]:

array([7, 1, 3])

三、陣列切片返回的不是資料的副本

與python內建資料型別list相區別,list切片返回的是值的副本。而numpy陣列切片返回的是陣列資料的檢視,不是數值資料的副本(摘自python資料科學手冊),接下來從**理解:

x

out[19]:

array([[2, 7, 3, 0],

[1, 1, 0, 1],

[4, 3, 0, 6]])

x_sub = x[:2,:2]

x_sub

out[22]:

array([[2, 7],

[1, 1]])

x_sub[0,0]=5 #陣列切片的值被修改後,原陣列也被修改了

out[23]:

array([[5, 7, 3, 0],

[1, 1, 0, 1],

[4, 3, 0, 6]])

四、建立numpy陣列的副本

用copy()方法。**略...

numpy中的陣列切片

如同python中自帶的切片,numpy中也有類似的切片功能。接下來對兩個功能進行一下簡單的對比。首先測試python自帶的功能,在shell視窗中測試如下 in 1 data range 10 in 2 data out 2 0,1,2,3,4,5,6,7,8,9 in 3 data1 data ...

Python中numpy陣列切片

python中符合切片並且常用的有 列表,字串,元組。下面那列表來說明,其他的也是一樣的。格式 開頭 結束 步長 開頭 當步長 0時,不寫預設0。當步長 0時,不寫預設 1 結束 當步長 0時,不寫預設列表長度加一。當步長 0時,不寫預設負的列表長度減一 步長 預設1,0 是從左往右走,0是從右往左...

Numpy(二) 陣列的索引和切片

ndarray物件的內容可以通過索引或切片來訪問和修改,與 python 中 list 的切片操作一樣。ndarray 陣列可以基於 0 n 的下標進行索引,切片物件可以通過內建的 slice 函式,並設定 start,stop 及 step 引數進行,從原陣列中切割出乙個新陣列。ndarray s...