我试图运行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)
这是可行的,但路太慢了。我知道参数的空间很大,但这不应该这么慢。在本例中,我只对10个6(一百万)点进行了采样,仅创建ABC0__数组就花费了超过15秒的时间。
你知道用NumPy做这件事有什么更有效的方法吗?
如果有必要,我可以修改函数__abc0接受参数的方式。