Получить значения из массива numpy 2d, используя список кортежей в качестве индексов - PullRequest
1 голос
/ 02 марта 2020

У меня есть список кортежей: [(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]])

Как я могу получить значения из массива 2d, расположенного с использованием позиций из списка с numpy? Я должен получить диагональ: [8,9,8,1,5]

Ответы [ 3 ]

3 голосов
/ 02 марта 2020

Попробуйте,

>>> 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]
1 голос
/ 02 марта 2020

Вы можете транспонировать список кортежей и передавать их как элементы в кортеже:

>>> b = [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> a[tuple(np.transpose(b))]
array([8, 9, 8, 1, 5])
0 голосов
/ 02 марта 2020

Вот один из способов сделать это:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...