6つのパラメーター関数のパラメーター空間を実行して数値の動作を調べてから、複雑な処理を行う前に、効率的な方法を模索しています。
私の関数は、入力として6次元のnumpy配列が指定された浮動小数点値を取ります。私が最初にやろうとしたのはこれです:
最初に、2つの配列を取り、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(百万)ポイントしかサンプリングしていませんvalues
。配列を作成するだけで15秒以上かかりました。
numpyでこれを行うより効率的な方法を知っていますか?
F
必要に応じて、関数が引数をとる方法を変更できます。