Python中numpy陣列切片

2021-10-12 07:10:32 字數 2915 閱讀 9646

python中符合切片並且常用的有:列表,字串,元組。

下面那列表來說明,其他的也是一樣的。

格式:[開頭:結束:步長]

開頭:當步長》0時,不寫預設0。當步長<0時,不寫預設-1

結束:當步長》0時,不寫預設列表長度加一。當步長<0時,不寫預設負的列表長度減一

步長:預設1,>0 是從左往右走,<0是從右往左走

遵循左閉右開原則,如:[0:9]等價於數學中的[0,9)

# 字串中用法

str = 'python'

print(str[::]) # python

print(str[::1]) # python

print(str[::2]) # pto 從左往右數,數2步,取乙個值

print(str[::-1]) # nohtyp 從右往左數,數1步,取乙個值,即:取全部值

print(str[::-2]) # nhy 從右往左數,數2步,取乙個值

# 列表中用法

list = [1, 2, 3, 4 , 5, 6]

print(list[::]) # [1, 2, 3, 4, 5, 6]

print(list[::1]) # [1, 2, 3, 4, 5, 6]

print(list[::2]) # [1, 3, 5]

print(list[::-1]) # [6, 5, 4, 3, 2, 1]

print(list[::-2]) # [6, 4, 2]

# [n::-1] 示例

# 先找下標值n,再翻轉(從右到左)取值

str = 'python'

list = [1, 2, 3, 4 , 5, 6]

print(str[1::-1]) # yp 先找到下標1的值:y,從右往左取值:yp

print(str[2::-1]) # typ 先找到下標2的值:t,從右往左取值:typ

print(list[1::-1]) # [2, 1] 先找到下標1的值:2,從右往左取值:[2, 1]

print(list[2::-1]) # [3, 2, 1] 先找到下標2的值:3,從右往左取值:[3, 2, 1]

通過冒號分隔切片引數 start:stop:step 來進行切片操作:
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

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],也就是從最後乙個元素到第乙個元素複製一遍。所以你看到乙個倒序的東東。

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號元素;

numpy的切片操作,一般結構如num[a:b,c:d],分析時以逗號為分隔符,

逗號之前為要取的num行的下標範圍(a到b-1),逗號之後為要取的num列的下標範圍(c到d-1);

前面是行索引,後面是列索引。

如果是這種num[:b,c:d],a的值未指定,那麼a為最小值0;

如果是這種num[a:,c:d],b的值未指定,那麼b為最大值;c、d的情況同理可得。

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...

Python快速過濾Numpy陣列中特定元素的方法

對於乙個numpy陣列,有的時候我們想選取或者剔除某些符合條件的元素值,卻突然發現除了一些特定的函式,如numpy.minimum 等,或者乙個巢狀迴圈之外束手無策。其實這裡有乙個trick1,可以使 有效而簡潔。讓我們來到乙個場景中 我們有乙個名為saliency的灰度影象陣列,用來表示一張中受關...