Búsqueda de cuadrícula elegante en python / numpy

Tengo una función que tiene un montón de parámetros. En lugar de configurar todos los parámetros manualmente, quiero realizar una búsqueda de cuadrícula. Tengo una lista de valores posibles para cada parámetro. Para cada posible combinación de parámetros, quiero ejecutar mi función que informa del rendimiento de mi algoritmo en esos parámetros. Quiero almacenar los resultados de esto en una matriz multidimensional, de modo que a partir de ahí pueda encontrar el índice del rendimiento máximo, que a su vez me proporcionaría los mejores parámetros. Aquí es cómo se escribe el código ahora:

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!

Quiero mantener la primera parte, donde defino las listas tal como están, ya que quiero poder manipular fácilmente los valores sobre los que busco.

También quiero terminar con la matriz de resultados tal como está, ya que visualizaré cómo el cambio de diferentes parámetros afecta el rendimiento del algoritmo.

Sin embargo, la broca en el medio es bastante repetitiva y voluminosa (especialmente porque tengo muchos parámetros y es posible que desee agregar o eliminar parámetros), y creo que debería haber una forma más sucinta / elegante de inicializar los resultados. Matriz, iterar sobre todos los índices y establecer los parámetros apropiados.

Entonces, ¿hay?

Respuestas a la pregunta(4)

Su respuesta a la pregunta