numpy 數組的切片操作

這兩天看到numpy數組的切片操作,記錄一下,方便以後查看

1. 常規操作

ndarray對象的內容可以通過索引或切片來訪問和修改,與 Python 中 list 的切片操作一樣。

ndarray 數組可以基於 0 - n 的下標進行索引,切片對象可以通過內置的 slice 函數,並設置 start, stop 及 step 參數進行,從原數組中切割出一個新數組。

a = np.arange(10)
print(a) # 輸出 [0 1 2 3 4 5 6 7 8 9]
s = slice(2, 10, 2) # 創建一個切片對象,從索引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. 二維和多維數組的切片

# 多維數組
# 二維數組
a2 = np.arange(12).reshape(4, 3)
print(a2)
print(a2[:, 2]) # 取下標爲2的整列數據

# # 對於超過3維的數組,可以用 '...' 來簡化操作
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 數組中值大於5
print(mask)
'''
[[False False False False]
 [False False False False]
 [False False False  True]
 [False False  True  True]]
'''

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章