In [547]: idx = np.random.randint(0, 100, (25, 10))
...: data = np.random.random(100)
...: output = np.empty((np.size(idx, 0), np.size(idx, 1)))
...: for i in range(0, np.size(idx, 0)):
...: output[i, :] = np.squeeze(data[idx[i, :]])
In [553]: idx.shape
Out[553]: (25, 10)
In [554]: output.shape
Out[554]: (25, 10)
Просто индексировать; нет необходимости повторять
In [555]: np.allclose(output, data[idx])
Out[555]: True
Существуют различия между MATLAB и numpy
при индексации с двумя массивами, по одному для каждого измерения. Проще говоря, в MATLAB проще индексировать блок, в numpy
индексирование диагонали более прямое. Но это не относится к делу.