Próbuję przeanalizować przestrzeń parametrów funkcji 6-parametrowej, aby zbadać jej zachowanie numeryczne, zanim spróbuję zrobić z nią coś złożonego, więc szukam skutecznego sposobu, aby to zrobić.
Moja funkcja przyjmuje wartości zmiennoprzecinkowe, które jako dane wejściowe przyjmują 6-dim tablicę numpy. Na początku próbowałem zrobić tak:
Najpierw stworzyłem funkcję, która pobiera 2 tablice i generuje tablicę ze wszystkimi kombinacjami wartości z dwóch tablic
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
Następnie reduce()
stosowałem to do m kopii tej samej tablicy:
def combs(a,m):
return reduce(comb,[a]*m)
A potem oceniam moją funkcję w ten sposób:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
To działa, ale jest zbyt wolne. Wiem, że przestrzeń parametrów jest ogromna, ale nie powinno to być takie wolne. W tym przykładzie pobrałem tylko 10 6 (milion) punktów, a samo utworzenie tablicy zajęło więcej niż 15 sekund values
.
Czy znasz lepszy sposób na zrobienie tego z numpy?
Mogę zmodyfikować sposób, w jaki funkcja F
przyjmuje argumenty, jeśli jest to konieczne.