Я ищу векторный способ индексирования numpy.array
по numpy.array
индексов.Index 2D массив numpy по 2D массиву индексов без петель
Например:
import numpy as np
a = np.array([[0,3,4],
[5,6,0],
[0,1,9]])
inds = np.array([[0,1],
[1,2],
[0,2]])
Я хочу построить новый массив, таким образом, что каждая строка (я) в этом массиве является строка (я) из массива a
, индексируются строки Inds массива (I). Мой желаемый результат:
array([[ 0., 3.], # a[0][:,[0,1]]
[ 6., 0.], # a[1][:,[1,2]]
[ 0., 9.]]) # a[2][:,[0,2]]
я могу добиться этого с помощью цикла:
def loop_way(my_array, my_indices):
new_array = np.empty(my_indices.shape)
for i in xrange(len(my_indices)):
new_array[i, :] = my_array[i][:, my_indices[i]]
return new_array
Но я ищу чистый векторизованный раствор.