這兩天看到numpy數(shù)組的切片操作,記錄一下,方便以后查看
1. 常規(guī)操作
ndarray對象的內容可以通過索引或切片來訪問和修改,與 Python 中 list 的切片操作一樣。
ndarray 數(shù)組可以基于 0 - n 的下標進行索引,切片對象可以通過內置的 slice 函數(shù),并設置 start, stop 及 step 參數(shù)進行,從原數(shù)組中切割出一個新數(shù)組。
a = np.arange(10)
print(a) # 輸出 [0 1 2 3 4 5 6 7 8 9]
s = slice(2, 10, 2) # 創(chuàng)建一個切片對象,從索引2開始,終止于索引10(不包含10) ,步長 2
print(a[s]) #輸出 [2 4 6 8]
s2 = a[1:10:2]
print(s2) #輸出 [1 3 5 7 9]
print(a[1]) #輸出 1
print(a[2:]) #輸出從下標為2開始,到最后
print(a[:5:2]) #輸出從下標0開始到下標5(不包含下標5),步長為2
2. 二維和多維數(shù)組的切片
# 多維數(shù)組
# 二維數(shù)組
a2 = np.arange(12).reshape(4, 3)
print(a2)
print(a2[:, 2]) # 取下標為2的整列數(shù)據(jù)
# # 對于超過3維的數(shù)組,可以用 '...' 來簡化操作
a = np.arange(24).reshape(2, 3, 4)
print(a)
print(a[1 , ...]) # 等價于 print(a[1, :, :])
print(a[... , 1]) # 等價于 print(a[ :, :, 1])
3.索引
# 索引
arr = np.array([[1,2,3,4],
[2,3,4,5],
[3,4,5,6],
[4,5,6,7]])
# print(arr[[0,2],]) #輸出 arr 的第0行和第一行
'''
[[1 2 3 4]
[3 4 5 6]]
'''
# print(arr[..., [2,3]]) # 輸出 arr 的第2列和第三列
'''
[[3 4]
[4 5]
[5 6]
[6 7]]
'''
print(arr[..., [3, 2]]) #注意順序
'''
[[4 3]
[5 4]
[6 5]
[7 6]]
'''
# print(arr[[0, 2], [2, 3]]) #輸出 第下標為0的行的第下標為2的列, 和 第下標為2的行的第下標為3的列
'''
[3 6]
'''
# boolean/mask index
mask = arr > 5 # arr 數(shù)組中值大于5
print(mask)
'''
[[False False False False]
[False False False False]
[False False False True]
[False False True True]]
關鍵詞: