Usando numpy para construir una matriz de todas las combinaciones de dos matrices

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 forma eficiente de hacerlo.

Mi función toma valores flotantes a los que se les asigna una matriz de 6 dimpy de 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

Entonces utilicéreduce() para 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 demasiado lento. Sé que el espacio de parámetros es enorme, pero esto no debería ser tan lento. Solo he muestreado 106 (un millón) puntos en este ejemplo y se tardó más de 15 segundos en crear la matrizvalues.

¿Conoces alguna forma más eficiente de hacer esto con numpy?

Puedo modificar la forma en que funciona la función.F Toma sus argumentos si es necesario.

Respuestas a la pregunta(9)

Su respuesta a la pregunta