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

Python 使用元组列表作为索引,从numpy 2d数组中获取值,python,arrays,numpy,Python,Arrays,Numpy,我有一个元组列表:[(0,0)、(1,1)、(2,2)、(3,3)、(4,4)] 我有我的2d numpy阵列: 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列表中的位置从二维数组中获取值? 我应该得到对角线:[8,9,8,1,5]这里有一种方法: a=np.array([[8,

我有一个元组列表:
[(0,0)、(1,1)、(2,2)、(3,3)、(4,4)]
我有我的2d numpy阵列:

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列表中的位置从二维数组中获取值?
我应该得到对角线:
[8,9,8,1,5]

这里有一种方法:

 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)

打印
数组([8,9,8,1,5])

这里有一种方法:

 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)
打印
数组([8,9,8,1,5])

试试这个

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

>>> 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])

您可以转换元组列表,并将其作为元组中的项传递:

>>> b = [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> a[tuple(np.transpose(b))]
array([8, 9, 8, 1, 5])

这始终是对角线还是只是一个示例?您需要将列表转换为列表元组,每个维度一个
([0,1,2,3],[0,1,2,3])
这始终是对角线还是只是一个示例?您需要将列表转换为列表元组,每个维度一个
([0,1,2,3],[0,1,2,3])