У меня есть функция с множеством параметров. Вместо того, чтобы вручную устанавливать все параметры, я хочу выполнить поиск по сетке. У меня есть список возможных значений для каждого параметра. Для каждой возможной комбинации параметров я хочу запустить свою функцию, которая сообщает о производительности моего алгоритма по этим параметрам. Я хочу сохранить результаты этого в многомерной матрице, так что послесловие я могу просто найти индекс максимальной производительности, который, в свою очередь, даст мне лучшие параметры. Вот как код написан сейчас:
param1_list = [p11, p12, p13,...]
param2_list = [p21, p22, p23,...] # not necessarily the same number of values
...
results_size = (len(param1_list), len(param2_list),...)
results = np.zeros(results_size, dtype = np.float)
for param1_idx in range(len(param1_list)):
for param2_idx in range(len(param2_list)):
...
param1 = param1_list[param1_idx]
param2 = param2_list[param2_idx]
...
results[param1_idx, param2_idx, ...] = my_func(param1, param2, ...)
max_index = np.argmax(results) # indices of best parameters!
Я хочу сохранить первую часть, где я определяю списки как есть, так как я хочу легко манипулировать значениями, по которым я ищу.
Я также хочу получить матрицу результатов как есть, так как я буду визуализировать, как изменение разных параметров влияет на производительность алгоритма.
Бит в середине, однако, довольно повторяющийся и громоздкий (особенно потому, что у меня много параметров, и я могу добавить или удалить параметры), и я чувствую, что должен быть более сжатый/элегантный способ инициализировать матрицу результатов, перебрать все индексы и установить соответствующие параметры.
Итак, есть?