Użycie numpy do zbudowania tablicy wszystkich kombinacji dwóch tablic
Próbuję uruchomić przestrzeń parametrów funkcji 6 parametrów, aby zbadać jej zachowanie numeryczne, zanim spróbuję zrobić coś skomplikowanego, więc szukam skutecznego sposobu, aby to zrobić.
Moja funkcja przyjmuje wartości zmiennoprzecinkowe podając 6-dimmową tablicę numpy jako dane wejściowe. Na początku starałem się to zrobić:
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
Potem użyłemreduce()
aby zastosować to do m kopii tej samej tablicy:
def combs(a,m):
return reduce(comb,[a]*m)
A potem oceniam swoją 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 wolny. Wiem, że przestrzeń parametrów jest ogromna, ale to nie powinno być takie powolne. Próbowałem tylko 106 (milion) punktów w tym przykładzie, a utworzenie tablicy zajęło ponad 15 sekundvalues
.
Czy znasz jakiś skuteczniejszy sposób na zrobienie tego za pomocą numpy?
Mogę zmodyfikować sposób działania funkcjiF
bierze to za argumenty, jeśli jest to konieczne.