Sto cercando di scorrere lo spazio dei parametri di una funzione a 6 parametri per studiarne il comportamento numerico prima di provare a fare qualcosa di complesso con esso, quindi sto cercando un modo efficiente per farlo.
La mia funzione accetta valori float dati come array numpy 6 dim come input. Quello che ho provato a fare inizialmente era questo:
Innanzitutto ho creato una funzione che accetta 2 array e genera un array con tutte le combinazioni di valori dei due array
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
Quindi lo reduce()
applicavo a m copie dello stesso array:
def combs(a,m):
return reduce(comb,[a]*m)
E quindi valuto la mia funzione in questo modo:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
Funziona ma è troppo lento. So che lo spazio dei parametri è enorme, ma non dovrebbe essere così lento. In questo esempio ho campionato solo 10 6 (un milione) di punti e ci sono voluti più di 15 secondi solo per creare l'array values
.
Conosci un modo più efficace di farlo con numpy?
Posso modificare il modo in cui la funzione F
accetta i suoi argomenti se è necessario.