Bunu yapmak için verimli bir yol arıyor bu yüzden onunla karmaşık bir şey yapmaya çalışmadan önce sayısal davranışını incelemek için bir 6 parametre işlevinin parametre alanı üzerinden çalışıyorum.
Benim fonksiyonum girdi olarak 6-dim numpy dizi verilen float değerlerini alır. Başlangıçta yapmaya çalıştığım şey şuydu:
İlk önce 2 diziyi alan ve iki diziden gelen değerlerin tüm kombinasyonlarını içeren bir dizi oluşturdum
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
Sonra reduce()
aynı dizinin m kopyalarına uygulamak için kullanılır :
def combs(a,m):
return reduce(comb,[a]*m)
Sonra fonksiyonumu şöyle değerlendiriyorum:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
Bu işe yarıyor ama çok yavaş. Parametrelerin uzayının çok büyük olduğunu biliyorum, ama bu çok yavaş olmamalı. Bu örnekte sadece 10 6 (bir milyon) puan örnekledim ve sadece diziyi oluşturmak 15 saniyeden fazla sürdü values
.
Numpy ile bunu yapmanın daha etkili bir yolunu biliyor musunuz?
F
Gerekirse işlevin argümanları alma şeklini değiştirebilirim .