Элегантный поиск по сетке в python / numpy

У меня есть функция, которая имеет кучу параметров. Вместо того, чтобы устанавливать все параметры вручную, я хочу выполнить поиск по сетке. У меня есть список возможных значений для каждого параметра. Для каждой возможной комбинации параметров я хочу запустить свою функцию, которая сообщает производительность моего алгоритма по этим параметрам. Я хочу сохранить результаты этого в многомерной матрице, чтобы после слов я мог просто найти индекс максимальной производительности, который, в свою очередь, дал бы мне лучшие параметры. Вот как код написан сейчас:

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!

Я хочу сохранить первую часть, где я определяю списки как есть, так как я хочу легко иметь возможность манипулировать значениями, по которым я ищу.

Я также хочу закончить с матрицей результатов, как есть, так как я буду визуализировать, как изменение различных параметров влияет на производительность алгоритма.

Хотя немного посередине, он довольно повторяющийся и громоздкий (особенно потому, что у меня много параметров, и я могу захотеть добавить или удалить параметры), и я чувствую, что должен быть более лаконичный / элегантный способ инициализации результатов матрица, итерации по всем индексам, и установить соответствующие параметры.

Так есть?

Ответы на вопрос(4)

Ваш ответ на вопрос