python中numpy陣列切片實驗解釋

2022-08-10 09:06:08 字數 2899 閱讀 6307

print(a[0::2])、a[::2]、[:,2]、[1:,-1:]、a[::-1]、[ : n]、[m : ]、[-1]、[:-1]、[1:]等的含義

文章目錄

一維陣列(冒號:)

1、乙個引數:a[i]

2、兩個引數:b=a[i:j]

3、三個引數:格式b = a[i:j:s]

4、乙個例子

二維陣列(逗號,)

取元素 x[n0,n1]

切片 x[s0:e0,s1:e1]

切片特殊情況 x[:e0,s1:]

**例項

numpy陣列切片操作

一維陣列(冒號:)

通過冒號分隔切片引數 start:stop:step 來進行切片操作:

import numpy as np

a=[1,2,3.4,5]

print(a)

[ 1 2 3 4 5 ]

1、乙個引數:a[i]

如 [2],將返回與該索引相對應的單個元素。

2、兩個引數:b=a[i:j]

b = a[i:j] 表示複製a[i]到a[j-1],以生成新的list物件

i預設時預設為0,即 a[:n] 代表列表中的第一項到第n項,相當於 a[0:n]

j預設時預設為len(alist),即a[m:] 代表列表中的第m+1項到最後一項,相當於a[m:5]

當i,j都預設時,a[:]就相當於完整複製a

print(a[-1])     取最後乙個元素

結果:[5]

print(a[:-1])     除了最後乙個取全部

結果:[ 1 2 3 4 ]

print(a[1:])     取第二個到最後乙個元素

結果:[2 3 4 5]

3、三個引數:格式b = a[i:j:s]

這裡的s表示步進,預設為1.(-1時即翻轉讀取)

所以a[i:j:1]相當於a[i:j]

當s<0時,i預設時,預設為-1. j預設時,預設為-len(a)-1

所以a[::-1]相當於 a[-1:-len(a)-1:-1],也就是從最後乙個元素到第乙個元素複製一遍。所以你看到乙個倒序的東東。

print(a[::-1])     取從後向前(相反)的元素

結果:[ 5 4 3 2 1 ]

print(a[2::-1])     取從下標為2的元素**翻轉讀取**

結果:[ 3 2 1 ]

4、乙個例子

傳送門c. substring game in the lesson

題解:如果 l 能移動,那麼 r 一定可以隨便移動,如果 l 不動,那麼 r 一定不能動

那麼我們現在只要考慮 l 的移動即可

考慮找到位置 k 之前的最左邊的最小的字元,如果存在,先手可以直接把 l 移過去,那麼後手就沒得走了

如果不存在,那麼先手顯然沒得移動

所以直接根據每個位置左邊最小的字元是否小於當前位置的字元即可判斷勝負

m='z'

for c in input():

print('mainkne'[c>m::2])

m=min(m, c)

二維陣列(逗號,)

x[n0,n1]是通過 numpy 庫引用二維陣列或矩陣中的某一段資料集的一種寫法。

類似的,x[n0,n1,n2]表示取三維陣列,取n維陣列則有n個引數,n-1個逗號分隔。

取元素 x[n0,n1]

這是最基本的情況,表示取 第0維 的第 n0 個元素,繼續取 第1維 的第 n1個元素。如 x[2,2] 表示第0維第2個元素[20,21,22,23],然後取其第1維的第2個元素即 22;

切片 x[s0:e0,s1:e1]

這是最通用的切片操作,表示取 第0維 的第 s0 到 e0 個元素,繼續取 第1維 的第 s1 到 e1 個元素(左閉右開)。如 x[1:3,1:3] 表示第0維第(1:3)個元素[[10,11,12,13],[20,21,22,23]],然後取其第1維的第(1:3)個元素即 [[11,12],[21,22]];

切片特殊情況 x[:e0,s1:]

特殊情況,即左邊從0開始可以省略x[:e0,s1:e1],右邊到結尾可以省略x[s0:,s1:e1],取某一維全部元素x[:,s1:e1],事實上和python 的 序列切片規則是一樣的。

常見的 x[:,0] 則表示 第0維取全部,第1維取0號元素;

**例項

import numpy as np

x = np.array([[0,1,2,3],[10,11,12,13],[20,21,22,23],[30,31,32,33]])

#x 是乙個二維陣列,維度為 0 ,1;第 0 層 表示第 0 維;第 1 層 表示第 1 維;

# x[n0,n1] 表示第 0 維 取第n0 個元素 ,第 1 維取第 n1 個元素

print(x[1,0])

# x[1:3,1:3] 表示第 0 維 取 (1:3)元素 ,第 1 維取第(1:3) 個元素

print(x[1:3,1:3])

# x[:n0,:n1] 表示第 0 維 取 第0 到 第n0 個元素 ,第 1 維取 第0 到 第n1 個元素

print(x[:2,:2])

# x[:,:n1] 表示第 0 維 取 全部元素 ,第 1 維取 第0 到第n1 個元素

print(x[:,:2])

# x[:,0]) 表示第 0 維 取全部 元素 ,第 1 維取第 0 個元素

print(x[:,0])

輸出結果:

10[[11 12]

[21 22]]

[[ 0  1]

[10 11]]

[[ 0  1]

[10 11]

[20 21]

[30 31]]

[ 0 10 20 30]

原文:參考部落格:

推薦部落格:

Python中numpy陣列切片

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

Python中numpy陣列的合併

python中numpy陣列的合併有很多方法,如 np.concatenate np.stack np.hstack np.vstack np.dstack 其中最泛用的是第乙個和第二個。第乙個可讀性好,比較靈活,但是佔記憶體大。第二個則沒有記憶體占用大的問題。parameters introduc...

python中Numpy的陣列建立

numpy的主要物件是同種元素的多維陣列 特點 這是乙個所有元素都是一種型別,通過乙個正整數元組索引的元素 numpy底層是使用c編寫的 import numpy as np arr1 np.array 1,2,3 陣列的秩 軸的個數稱為秩 軸 axes 是陣列的維度 print arr1.ndim...