python矩陣列表轉(zhuǎn)換索引計算

首先,要知道數(shù)組有兩種索引方式。比如對一個3x4的矩陣a(數(shù)據(jù)類型為:numpy.array)

  • 線性索引(LINEAR indices):a[10]。首先要明白,np.array是按照先行后列存儲的。這也決定了矩陣reshape的結(jié)果
  • 矩陣索引:a[1,2]

unravel_index 已知線性索引,求矩陣索引

  • 第一個參數(shù):可以是任意矩陣。矩陣的值是線性索引
  • 第二個參數(shù):必須是矩陣的形狀。如對于3x4的矩陣a,就是a.shape(3,4)

執(zhí)行下面的代碼

import numpy np
np.unravel_index([3, 0, 10], (3,4)) # 在一個(3x4)的矩陣中,第3、第0、第10個元素,的行列索引

結(jié)果是

(array([0, 0, 2], dtype=int64), array([3, 0, 2], dtype=int64))

解釋:

對于一個(3x4)的矩陣,它的數(shù)據(jù)編號如下。所以輸出結(jié)果就很好理解了

0 1 2 3
4 5 6 7
8 9 10 11

ravel_multi_index 已知矩陣索引,求線性索引

  • 第一個參數(shù):比如是與參數(shù)二對應(yīng)的,矩陣索引。例如,參數(shù)2指明形狀為3x4;那就說明是二維的,那么這里的參數(shù)必須是2xN的np.array
  • 第二個參數(shù):必須是矩陣的形狀。如對于3x4的矩陣a,就是a.shape(3,4)

執(zhí)行下面的代碼。它是上面unravel_index例程的逆過程

import numpy np
np.ravel_multi_index (np.array([[0, 0, 2],[3, 0, 2]]),(3,4)) # 在一個(3x4)的矩陣中,求(0,3),(0,0),(2,2)位置處的線性索引

結(jié)果是

array([ 3,  0, 10], dtype=int64)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容