1. 程式人生 > 其它 >Python筆記:Numpy之索引和切片

Python筆記:Numpy之索引和切片

一維陣列

arr = np.arange(10)
#獲取陣列的第5個元素,從0開始
arr[5]
#獲取陣列的第5個至第8個(不包含第8個元素)元素
arr[5:8]
#從0開始,為陣列的第5個至第8個(不包含第8個元素)元素賦值12
#為切片賦值時,整個選區裡所有元素都會變成這個值
arr[5:8] = 5
#給陣列中所有值賦值
arr[:] = 5

在Numpy中,我們是無法為切片建立新副本的,比如:

以上的方法,在Numpy中,只是為切片取了一個別名,操作的物件還是源陣列的選區。

多維陣列

arr2 = np.array([[1,2,3],[3,4,5],[5,6,7]])
#從0開始,獲取陣列第1行的陣列
arr2[1]
#從0開始,獲取陣列第0行第1列的元素
arr2[0][1]
#也可以寫作
arr2[0,1]
#從0開始,獲取前2行的資料
arr2[:2]
#從0開始,獲取第1行前兩列的資料
arr2[1,:2]
#從0開始,獲取前2行第一列後的資料
arr2[:2,1:]

布林型索引

data = np.random.randint(10, size=(5,10))

#從0開始,獲取第3列為5的資料
data[data[:,3] == 5]
#可以使用“~”反轉條件
data[~(data[:,3] == 5)]
#可以使用布林運算子&(與)、|(或)
mask = (data[:,3] == 5)|(data[:,3] == 6)
data[mask]
#將所有小於5的資料設定為0
data[data < 5] = 0
#從0開始,將除了第3列等於5的行之外的資料全部設定為0
data[~(data[:,3] == 5)] = 0