0
Я хочу взять некоторые индексы из элементов numpy.array. Это то, что я получил до сих пор:Можно ли использовать numpy.take для выбора списка индексов?
import numpy as np
a = np.array(range(20))
a.shape=4,5
#~ [[ 0 1 2 3 4]
#~ [ 5 6 7 8 9]
#~ [10 11 12 13 14]
#~ [15 16 17 18 19]]
idxs = np.array([(4,0),(3,1),(2,1),(0,3)])
ret = a.take(idxs,1).diagonal().transpose()
print ret
#~ [[ 4. 0.]
#~ [ 8. 6.]
#~ [ 12. 11.]
#~ [ 15. 18.]]
ли можно получить этот результат в более простом (или более быстрый) способ?
Вашего 'idxs' будет работать на транспонированной' a' только. Нет 'a [4,0]'. – eumiro
Я так себя не объяснил, извините. (4,0), которое вы видите, означает взять элемент 4 и элемент 0 из первой строки. Затем возьмите элементы 3 и 1 из второй строки и т. Д. Результат, который я показываю, верен, меня не удовлетворяет метод. – rapto
Также как общее замечание, чтобы создать 'a', вы должны использовать что-то вроде' a = np.arange (20) .reshape ((4,5)) ' – JoshAdel