Usando numpy para construir uma matriz de todas as combinações de duas matrizes

Eu estou tentando atropelar o espaço de parâmetros de uma função de 6 parâmetros para estudar seu comportamento numérico antes de tentar fazer algo complexo com isso, então estou procurando uma maneira eficiente de fazer isso.

Minha função usa valores flutuantes, dado um array numpy de 6 dim como entrada. O que eu tentei fazer inicialmente foi isto:

Primeiro eu criei uma função que leva 2 arrays e gera um array com todas as combinações de valores dos dois arrays

from numpy import *
def comb(a,b):
    c = []
    for i in a:
        for j in b:
            c.append(r_[i,j])
    return c

Então eu useireduce() para aplicar isso a m cópias da mesma matriz:

def combs(a,m):
    return reduce(comb,[a]*m)

E então eu avalio minha função assim:

values = combs(np.arange(0,1,0.1),6)
for val in values:
    print F(val)

Isso funciona, mas é muito lento. Eu sei que o espaço dos parâmetros é enorme, mas isso não deve ser tão lento. Eu provei apenas 106 (um milhão) pontos neste exemplo e demorou mais de 15 segundos apenas para criar o arrayvalues.

Você conhece alguma maneira mais eficiente de fazer isso com o numpy?

Eu posso modificar a maneira como a funçãoF leva seus argumentos se for necessário.

questionAnswers(9)

yourAnswerToTheQuestion