切片操作在陣列提取資料中經常用到,但使用靈活,有時不能理解具體的處理過程. 所以將其徹底弄明白很有必要.
直接上例子
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...