更新時(shí)間:2022-10-28 來源:黑馬程序員 瀏覽量:
花式索引是NumPy的一個(gè)術(shù)語,是指將整數(shù)數(shù)組或列表作為索引,然后根據(jù)索引數(shù)組或索引列表的每個(gè)元素作為目標(biāo)數(shù)組的下標(biāo)再進(jìn)行取值。
當(dāng)使用一維數(shù)組或列表作為索引時(shí),如果使用索引要操作的目標(biāo)對(duì)象是一維數(shù)組,則獲取的結(jié)果是對(duì)應(yīng)下標(biāo)的元素;如果要操作的目標(biāo)對(duì)象是一個(gè)二維數(shù)組,則獲取的結(jié)果是對(duì)應(yīng)下標(biāo)的元素;如果要操作的目標(biāo)對(duì)象是一個(gè)二維數(shù)組,則獲取的結(jié)果就是對(duì)應(yīng)下標(biāo)的一行數(shù)據(jù)。
例如,創(chuàng)建一個(gè)4行4列的二維數(shù)組,示例代碼如下。
In [67]: import numpy as np In [68]: demo_arr=np.empty((4, 4)) # 創(chuàng)建一個(gè)空數(shù)組 for i in range(4): demo_arr[i]=np.arange(i, i+4) # 動(dòng)態(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對(duì)應(yīng)的一行數(shù)據(jù)以及索引2對(duì)應(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所示。
如果使用兩個(gè)花式索引操作數(shù)組時(shí),即兩個(gè)列表或數(shù)組,則會(huì)將第1個(gè)作為行索引,第2個(gè)作為列索引,通過二維數(shù)組索引的方式,選取其對(duì)應(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 花式索引圖示(兩個(gè)數(shù)組當(dāng)索引)