Другой идеей было бы объединить понимание списка и itemgetter
. Нам нужно использовать itemgetter
вместо обычного оператора среза, так как мы хотим извлечь элементы из списка с произвольными индексами, согласно вашему вводу:
# sample inputs
In [18]: sample_arr = [np.array([5, 3, 2]), np.array([4, 0, 1, 6])]
In [19]: sample_list = [10, 11, 12, 13, 14, 15, 16]
In [20]: from operator import itemgetter
Мы используем понимание единого списка, где мы повторяем элементы в списке sample_arr
и используйте itemgetter
для нарезки. Это вернуло бы вызываемый объект, в который мы передали бы список, из которого нужно выбрать элементы (т.е. sample_list
). Наконец, нам нужно обернуть результат в np.array()
, так как вам нужен список массивов, аналогичный вводу.
final_array = [np.array(itemgetter(*arr.tolist())(sample_list)) for arr in sample_arr]
In [22]: final_array
Out[22]: [array([15, 13, 12]), array([14, 10, 11, 16])]