Hi,
I'm trying to run over the parameters space of a 6 parameter function to study it's numerical behavior before trying to do anything complex with it so I'm searching for a efficient way to do this.
My function takes float values given a 6-dim numpy array as input. What I tried to do initially was this:
1) First I created a function that takes 2 arrays and generate an array with all combinations of values from the two arrays
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
The I used reduce to apply that to m copies of the same array:
def combs(a,m):
return reduce(comb,[a]*m)
And then I evaluate my function like this:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
This works but it's waaaay too slow. I know the space of parameters is huge, but this shouldn't be so slow. I have only sampled (10)^6 = a million points in this example and it took more then 15 seconds just to create the array 'values'.
Do you know any more efficient way of doing this with numpy?
I can modify the way the function F take it's arguments if it's necessary.