我有一個(gè)元組列表:我有我的2d numpy數(shù)組:[(0,0), (1,1), (2,2), (3,3), (4,4)]array([[8, 6, 5, 9, 3],
[7, 9, 7, 9, 1],
[2, 1, 8, 8, 6],
[7, 1, 5, 1, 3],
[6, 7, 1, 1, 5]])如何通過使用帶有numpy的列表位置從2d數(shù)組中獲取值?我應(yīng)該得到對角線:[8,9,8,1,5]
3 回答

牛魔王的故事
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
試試這個(gè),
>>> import numpy as np>>> req_index = [(0,0), (1,1), (2,2), (3,3), (4,4)] # this is your tuple index list>>> arr = np.array([[8, 6, 5, 9, 3], [7, 9, 7, 9, 1], [2, 1, 8, 8, 6], [7, 1, 5, 1, 3], [6, 7, 1, 1, 5]]) >>>
輸出:
>>> [arr[i][j] for i, j in req_index] [8, 9, 8, 1, 5]

月關(guān)寶盒
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以轉(zhuǎn)置元組列表,并將這些元組作為項(xiàng)傳遞到元組中:
>>> b = [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> a[tuple(np.transpose(b))]
array([8, 9, 8, 1, 5])

慕娘9325324
TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
以下是執(zhí)行此操作的一種方法:
a=np.array([[8, 6, 5, 9, 3], [7, 9, 7, 9, 1], [2, 1, 8, 8, 6], [7, 1, 5, 1, 3], [6, 7, 1, 1, 5]]) np.diag(a)
指紋。array([8, 9, 8, 1, 5])
添加回答
舉報(bào)
0/150
提交
取消