通过使用元组列表作为索引从 numpy 2d 数组中获取值

我有一个元组列表:我有我的2d numpy数组:[(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数组中获取值?我应该得到对角线:[8,9,8,1,5]


富国沪深
浏览 92回答 3
3回答

牛魔王的故事

试试这个,>>> 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]

月关宝盒

您可以转置元组列表,并将这些元组作为项传递到元组中:>>> b = [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]>>> a[tuple(np.transpose(b))]array([8, 9, 8, 1, 5])

慕娘9325324

以下是执行此操作的一种方法: 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])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python