У меня странная ситуация.
У меня есть 2D-массив Numpy, x:
x = np.random.random_integers(0,5,(20,8))
И у меня есть 2 индексатора - один с индексами для строк и один с индексами для столбца. Чтобы индексировать X, мне нужно сделать следующее:
row_indices = [4,2,18,16,7,19,4]
col_indices = [1,2]
x_rows = x[row_indices,:]
x_indexed = x_rows[:,column_indices]
Вместо просто:
x_new = x[row_indices,column_indices]
(который не с ошибкой: не может транслировать (20,) с (2,))
Я хотел бы иметь возможность делать индексирование в одной строке с использованием широковещательной передачи, поскольку это будет держать код в чистоте и читабельном... Кроме того, я не знаю все о python под капотом, но как я понимаю, это должно быть быстрее сделать это в одной строке (и я буду работать с довольно большими массивами).
Тестовый пример:
x = np.random.random_integers(0,5,(20,8))
row_indices = [4,2,18,16,7,19,4]
col_indices = [1,2]
x_rows = x[row_indices,:]
x_indexed = x_rows[:,col_indices]
x_doesnt_work = x[row_indices,col_indices]