Estoy tratando de ejecutar el espacio de parámetros de una función de 6 parámetros para estudiar su comportamiento numérico antes de intentar hacer algo complejo con él, así que estoy buscando una manera eficiente de hacerlo.
Mi función toma valores flotantes dada una matriz numpy de 6 dim como entrada. Lo que intenté hacer inicialmente fue esto:
Primero creé una función que toma 2 matrices y genera una matriz con todas las combinaciones de valores de las dos matrices
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
Luego solía reduce()
aplicar eso a m copias de la misma matriz:
def combs(a,m):
return reduce(comb,[a]*m)
Y luego evalúo mi función así:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
Esto funciona pero es muuuuy lento. Sé que el espacio de parámetros es enorme, pero esto no debería ser tan lento. Solo he muestreado 10 6 (un millón) puntos en este ejemplo y me llevó más de 15 segundos crear la matriz values
.
¿Conoces alguna forma más eficiente de hacer esto con numpy?
Puedo modificar la forma en que la función F
toma sus argumentos si es necesario.