Eleganckie wyszukiwanie siatki w python / numpy

Mam funkcję, która ma kilka parametrów. Zamiast ręcznie ustawiać wszystkie parametry, chcę przeprowadzić wyszukiwanie siatki. Mam listę możliwych wartości dla każdego parametru. Dla każdej możliwej kombinacji parametrów chcę uruchomić moją funkcję, która zgłasza wydajność mojego algorytmu na tych parametrach. Chcę przechowywać wyniki tego w macierzy wielowymiarowej, tak, że po słowach mogę po prostu znaleźć indeks maksymalnej wydajności, który z kolei dałby mi najlepsze parametry. Oto jak napisano kod:

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!

Chcę zachować pierwszą część, w której definiuję listy jako takie, ponieważ chcę z łatwością manipulować wartościami, nad którymi szukam.

Chcę też skończyć z macierzą wyników, ponieważ będę wyobrażał sobie, jak zmiana różnych parametrów wpływa na wydajność algorytmu.

Kawałek na środku jest jednak dość powtarzalny i nieporęczny (zwłaszcza, że ​​mam wiele parametrów i chciałbym dodać lub usunąć parametry), i czuję, że powinien być bardziej zwięzły / elegancki sposób inicjalizacji wyników macierz, iteruj wszystkie indeksy i ustaw odpowiednie parametry.

Więc jest?

questionAnswers(4)

yourAnswerToTheQuestion