Использование numpy для построения массива всех комбинаций из двух массивов

Я пытаюсь пробежаться по пространству параметров функции с 6 параметрами, чтобы изучить ее числовое поведение, прежде чем пытаться что-то сделать с ней сложным, поэтому я ищу эффективный способ сделать это.

Моя функция принимает значения с плавающей запятой, используя в качестве входных данных массив из 6 диммеров. Сначала я попытался сделать следующее:

Сначала я создал функцию, которая принимает 2 массива и генерирует массив со всеми комбинациями значений из двух массивов.

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

Тогда я использовалreduce() чтобы применить это к m копиям одного и того же массива:

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

И тогда я оцениваю свою функцию следующим образом:

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

Это работает, но это слишком медленно. Я знаю, что пространство параметров огромно, но это не должно быть таким медленным. Я выбрал только 106 (миллион) точек в этом примере, и создание массива заняло более 15 секундvalues.

Знаете ли вы более эффективный способ сделать это с NumPy?

Я могу изменить способ, которым функцияF принимает аргументы, если это необходимо.

Ответы на вопрос(9)

Ваш ответ на вопрос