J'essaie de parcourir l'espace des paramètres d'une fonction à 6 paramètres pour étudier son comportement numérique avant d'essayer de faire quelque chose de complexe avec, donc je recherche un moyen efficace de le faire.
Ma fonction prend des valeurs flottantes données un tableau numpy de 6 dim en entrée. Voici ce que j'ai essayé de faire au départ:
J'ai d'abord créé une fonction qui prend 2 tableaux et génère un tableau avec toutes les combinaisons de valeurs des deux tableaux
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
Ensuite, reduce()
j'appliquais cela à m copies du même tableau:
def combs(a,m):
return reduce(comb,[a]*m)
Et puis j'évalue ma fonction comme ceci:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
Cela fonctionne mais c'est trop lent. Je sais que l'espace des paramètres est énorme, mais cela ne devrait pas être si lent. Je n'ai échantillonné que 10 6 (un million) points dans cet exemple et il a fallu plus de 15 secondes pour créer le tableau values
.
Connaissez-vous un moyen plus efficace de faire cela avec numpy?
Je peux modifier la façon dont la fonction F
prend ses arguments si c'est nécessaire.