Задача: данные 'значения' и 'ind' получают 'результат' самым грубым образом.
вход:
import numpy as np
values = np.reshape(np.array([x/100 for x in range(4*5*10)]), (4, 5, 10))
ind = np.reshape(np.array([np.random.randint(0,10) for x in range(4*5*5)]), (4, 5, 5))
образецжелаемый вывод:
result = np.array([[[0.08, 0.02, 0.03, 0.01, 0. ],
[0.18, 0.15, 0.17, 0.19, 0.17],
[0.29, 0.27, 0.24, 0.27, 0.2 ],
[0.39, 0.37, 0.33, 0.37, 0.3 ],
[0.46, 0.47, 0.48, 0.43, 0.49]],
[[0.56, 0.58, 0.57, 0.55, 0.52],
[0.63, 0.61, 0.63, 0.6 , 0.62],
[0.77, 0.74, 0.73, 0.71, 0.7 ],
[0.88, 0.82, 0.87, 0.82, 0.83],
[0.96, 0.95, 0.93, 0.98, 0.94]],
[[1.08, 1.09, 1.04, 1.02, 1.05],
[1.18, 1.16, 1.15, 1.12, 1.17],
[1.28, 1.29, 1.27, 1.21, 1.27],
[1.38, 1.38, 1.31, 1.35, 1.32],
[1.41, 1.49, 1.42, 1.48, 1.46]],
[[1.59, 1.5 , 1.56, 1.53, 1.51],
[1.6 , 1.69, 1.69, 1.6 , 1.68],
[1.79, 1.73, 1.72, 1.74, 1.77],
[1.84, 1.84, 1.83, 1.88, 1.8 ],
[1.98, 1.99, 1.91, 1.95, 1.92]]])
редактировать: мой плохой, забыл указать случайное начальное число.
редактировать: непустая версия кода:
result_ = np.zeros_like(result)
for batch_idx in range(len(values)):
for word_idx in range(len(values[0])):
result_[batch_idx][word_idx] = values[batch_idx,word_idx, ind[batch_idx, word_idx]]