python Numpy中的切片操作

2021-10-06 17:49:22 字數 2728 閱讀 6348

切片操作在陣列提取資料中經常用到,但使用靈活,有時不能理解具體的處理過程. 所以將其徹底弄明白很有必要.

直接上例子

import numpy as np

# 隨便設定乙個陣列a, 其索引為0-9.

a = np.array([1

,4,5

,2,9

,6,6

,7,8

,0])

#切片物件可以通過內建的 slice(start, stop,step)函式,並設定相應值從原陣列中切割出乙個新陣列。

s =slice(2

,7,2

)# 從索引 2 開始到索引 7 停止,間隔為2,即取a[2],a[4],a[6]的值

print

(a[s]

)

輸出

[59

6]process finished with exit code 0

為了簡化,可以將上述**s = slice(2, 7, 2)去掉,如:

import numpy as np

a = np.array([1

,4,5

,2,9

,6,6

,7,8

,0])

print

(a[2:7

:2])

# 輸出結果為 [5 9 6]

關於冒號 : 的用法,如果 a[ ]中只放乙個引數,如a[2],將返回乙個值,即5. 如果為 a[2:] ,則表示從索引值為2開始取值,直到最後乙個都會取到,即[5 2 9 6 6 7 8 0]. 如果為a[2:7],則表示從索引值為2開始取值,直到索引7位置,即[5 2 9 6 6]. 其實上面的a[2:]和a[2:7]中還隱藏乙個引數step(間隔),這個引數預設為1,所以又可以寫成a[2::1]和a[2:7:1]。**如下:

import numpy as np

a = np.array([1

,4,5

,2,9

,6,6

,7,8

,0])

# 隨便設定乙個陣列a, 其索引為0-9.

print

(a[2])

print

(a[2:]

)print

(a[2::

1])# a[2::1] == a[2:10:1]

print

(a[2:7

])print

(a[2:7

:1])

print

(a[::1

])# a[::1] == a[0:10:1] == a[::]

對應輸出:

5

# a[2][5

2966

780]

# a[2:][5

2966

780]

# a[2::1][5

2966

]# a[2:7][5

2966

]# a[2:7:1][1

4529

6678

0]# a[::1]

process finished with exit code 0

通過上面學習後,現在來講講切片的 高階用法

①當start部分為負值,如a[-2:],則表示從倒數第二個數開始往最後乙個取值.

import numpy as np

a = np.array([1

,4,5

,2,9

,6,6

,7,8

,0])

# 隨便設定乙個陣列a, 其索引為0-9.

print

(a[-2:

])

輸出

[80

]process finished with exit code 0

②當stop部分為負值,如a[:-2],表示從第乙個數開始往倒數第二個值取(注:倒數第二個不會取到)

import numpy as np

a = np.array([1

,4,5

,2,9

,6,6

,7,8

,0])

# 隨便設定乙個陣列a, 其索引為0-9.

print

(a[:-2

])

輸出

[14

5296

67]process finished with exit code 0

③當step部分為負值,如a[::-2],表示反向取值,間隔為2.

import numpy as np

a = np.array([1

,4,5

,2,9

,6,6

,7,8

,0])

# 隨便設定乙個陣列a, 其索引為0-9.

print

(a[::-

2])# a[::-2] == a[10:0:-2]

輸出

[07

624]

process finished with exit code 0

python numpy切片操作

python numpy中的切片與索引 import numpy as np import random a np.round random.random for i in range 10000 2 reshape 2500,4 print a print a 2 end n我是第二行 n pri...

python numpy 陣列的切片

參考 對於一維陣列 來說,python原生的list和numpy的array的切片操作都是相同的。arr name start end step 是複製源的意思 對於二維陣列來說,對陣列操作規範是這樣的 arr name 行操作,列操作 舉個例子 in np.arrange 12 reshape 3...

Python NumPy一維陣列的切片

numpy中對於一維陣列的切片處理,跟list的操作感覺差不多 in 1 import numpy as np in 2 arr1 np.arange 10 in 3 arr1 out 3 array 0,1,2,3,4,5,6,7,8,9 in 4 arr2 arr1 3 in 5 arr2 ou...