Je suis en train de courir sur les paramètres de l'espace de 6 paramètre de la fonction pour l'étude du comportement numérique avant d'essayer de faire quelque chose de complexe avec elle, donc je suis à la recherche d'un moyen efficace pour ce faire.
Ma fonction prend des valeurs float donné un 6-dim tableau numpy comme entrée. Ce que j'ai essayé de faire au départ était celle-ci:
1) d'Abord, j'ai créé une fonction qui prend 2 tableaux et de générer 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
La j'ai utilisé de la réduire à l'appliquer à m copies de la même matrice:
def combs(a,m):
return reduce(comb,[a]*m)
Puis-je évaluer 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 waaaay trop lent. Je sais que l'espace des paramètres est énorme, mais cela ne devrait pas être si lent. J'ai seulement goûté (10)^6 = un million de points dans cet exemple et il a fallu plus de 15 secondes juste pour créer le tableau des "valeurs".
Connais-tu un moyen plus efficace de le faire avec numpy?
Je peux modifier la façon dont la fonction F prendre c'est des arguments si c'est nécessaire.