更新時間:2022-10-28 來源:黑馬程序員 瀏覽量:
花式索引是NumPy的一個術(shù)語,是指將整數(shù)數(shù)組或列表作為索引,然后根據(jù)索引數(shù)組或索引列表的每個元素作為目標(biāo)數(shù)組的下標(biāo)再進(jìn)行取值。
當(dāng)使用一維數(shù)組或列表作為索引時,如果使用索引要操作的目標(biāo)對象是一維數(shù)組,則獲取的結(jié)果是對應(yīng)下標(biāo)的元素;如果要操作的目標(biāo)對象是一個二維數(shù)組,則獲取的結(jié)果是對應(yīng)下標(biāo)的元素;如果要操作的目標(biāo)對象是一個二維數(shù)組,則獲取的結(jié)果就是對應(yīng)下標(biāo)的一行數(shù)據(jù)。
例如,創(chuàng)建一個4行4列的二維數(shù)組,示例代碼如下。
In [67]: import numpy as np In [68]: demo_arr=np.empty((4, 4)) # 創(chuàng)建一個空數(shù)組 for i in range(4): demo_arr[i]=np.arange(i, i+4) # 動態(tài)地為數(shù)組添加元素 In [69]: demo_arr array([[0., 1., 2., 3.], [1., 2., 3., 4.], [2., 3., 4., 5.], [3., 4., 5., 6.]])
將[0,2]作為索引,分別獲取demo_arr中索引0對應(yīng)的一行數(shù)據(jù)以及索引2對應(yīng)的一行數(shù)據(jù)示例代碼如下。
In [70]: demo_arr[[0, 2]] # 獲取索引為[0,2]的元素 Out[70]: array([[0., 1., 2., 3.], [2., 3., 4., 5.]])
上述操作的相關(guān)示意圖如圖2-5所示。
如果使用兩個花式索引操作數(shù)組時,即兩個列表或數(shù)組,則會將第1個作為行索引,第2個作為列索引,通過二維數(shù)組索引的方式,選取其對應(yīng)位置的元素,示例代碼如下。
In [71]: demo_arr[[1, 3], [1, 2]] # 獲取索引為(1,1)和(3,2)的元素 Out[71]: array([2., 5.])
上述操作的相關(guān)示意圖如圖2-6所示。
demo_arr[[1,3],[1,2]]
圖2-6 花式索引圖示(兩個數(shù)組當(dāng)索引)