Почему бы вам не использовать itemgetter
и просто предоставить свой список в качестве индексатора:
index_1= [3,4,6,7,9,10,12,13]
my_data[:,index_1,:]
В наборе данных, таком как ваш:
>>> my_data.shape
(96, 18, 3)
>>> my_data[:,index_1,:].shape
(96, 8, 3)
Минимальный пример:
Возьмите 2-й и 4-й элемент измерения 1
массива (5,5,3)
:
>>> my_data = np.random.random((5,5,3))
>>> my_data
array([[[ 0.48913302, 0.65967146, 0.16984338],
[ 0.65309136, 0.61112866, 0.48317725],
[ 0.75979879, 0.1788647 , 0.84855963],
[ 0.95604821, 0.91686885, 0.04629087],
[ 0.32021119, 0.17582171, 0.44410709]],
[[ 0.40507398, 0.33866034, 0.57994344],
[ 0.35664701, 0.82952864, 0.48164719],
[ 0.53201074, 0.74598244, 0.025587 ],
[ 0.29090129, 0.85763979, 0.12372515],
[ 0.66274253, 0.45789019, 0.5960151 ]],
[[ 0.98733701, 0.21920232, 0.25870197],
[ 0.83877241, 0.74712859, 0.12972104],
[ 0.99349399, 0.58134955, 0.90017913],
[ 0.21030304, 0.68324321, 0.36743921],
[ 0.26277439, 0.30750822, 0.10385251]],
[[ 0.73189247, 0.49511839, 0.04785461],
[ 0.62492651, 0.92238879, 0.04875051],
[ 0.6779602 , 0.7643024 , 0.17460262],
[ 0.57072683, 0.87087793, 0.5888601 ],
[ 0.37419042, 0.39583678, 0.30297916]],
[[ 0.51922434, 0.21364451, 0.32678503],
[ 0.66437971, 0.6550304 , 0.61334286],
[ 0.16475464, 0.84246673, 0.32644154],
[ 0.56004586, 0.02378533, 0.61112593],
[ 0.59555996, 0.88077068, 0.44648423]]])
>>> index_1 = [1,3]
>>> my_data[:, index_1, :]
array([[[ 0.65309136, 0.61112866, 0.48317725],
[ 0.95604821, 0.91686885, 0.04629087]],
[[ 0.35664701, 0.82952864, 0.48164719],
[ 0.29090129, 0.85763979, 0.12372515]],
[[ 0.83877241, 0.74712859, 0.12972104],
[ 0.21030304, 0.68324321, 0.36743921]],
[[ 0.62492651, 0.92238879, 0.04875051],
[ 0.57072683, 0.87087793, 0.5888601 ]],
[[ 0.66437971, 0.6550304 , 0.61334286],
[ 0.56004586, 0.02378533, 0.61112593]]])