Использование 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
принимает аргументы, если это необходимо.