Я пытаюсь запустить пространство параметров функции параметров 6, чтобы изучить его численное поведение, прежде чем пытаться сделать что-то сложное с этим, поэтому я ищу эффективный способ сделать это.
Моя функция принимает значения с плавающей точкой, учитывая, что в качестве входных данных используется 6-мерная матрица numpy. Сначала я попытался сделать это:
Сначала я создал функцию, которая принимает 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)
Это работает, но это waaaay слишком медленно. Я знаю, что пространство параметров велико, но это не должно быть так медленно. В этом примере я выбрал только 10 6 (миллионов) точек, и для создания массива values
потребовалось более 15 секунд.
Знаете ли вы более эффективный способ сделать это с помощью numpy?
Я могу изменить способ, которым функция F
принимает аргументы, если это необходимо.