Ich versuche, den Parameterraum einer 6-Parameter-Funktion zu durchlaufen, um ihr numerisches Verhalten zu untersuchen, bevor ich versuche, etwas Komplexes damit zu tun, also suche ich nach einem effizienten Weg, dies zu tun.
Meine Funktion verwendet Float-Werte bei einem 6-Dim-Numpy-Array als Eingabe. Was ich anfangs versuchte, war Folgendes:
Zuerst habe ich eine Funktion erstellt, die 2 Arrays verwendet und aus den beiden Arrays ein Array mit allen Wertekombinationen generiert
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
Dann habe ich reduce()
das auf m Kopien desselben Arrays angewendet :
def combs(a,m):
return reduce(comb,[a]*m)
Und dann bewerte ich meine Funktion folgendermaßen:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
Das funktioniert, aber es ist zu langsam. Ich weiß, dass der Raum der Parameter riesig ist, aber das sollte nicht so langsam sein. Ich habe in diesem Beispiel nur 10 6 (eine Million) Punkte abgetastet und es dauerte mehr als 15 Sekunden, um das Array zu erstellen values
.
Kennen Sie einen effizienteren Weg, dies mit Numpy zu tun?
Ich kann die Art und Weise ändern, wie die Funktion F
ihre Argumente verwendet, wenn dies erforderlich ist.