Вы можете использовать operator.itemgetter
:
from operator import itemgetter
a = [-2, 1, 5, 3, 8, 5, 6]
b = [1, 2, 5]
print itemgetter(*b)(a)
# Result:
(1, 5, 5)
Или вы можете использовать numpy :
import numpy as np
a = np.array([-2, 1, 5, 3, 8, 5, 6])
b = [1, 2, 5]
print list(a[b])
# Result:
[1, 5, 5]
Но на самом деле, ваше текущее решение в порядке. Вероятно, это самый лучший из всех.
Если вы хотите получить желаемый результат по оси Y, используйте нечто похожее на это: