Saya mencoba menjalankan ruang parameter fungsi 6 parameter untuk mempelajari perilaku numeriknya sebelum mencoba melakukan sesuatu yang rumit dengannya jadi saya mencari cara yang efisien untuk melakukan ini.
Fungsi saya mengambil nilai float yang diberikan array numpy 6-dim sebagai input. Apa yang saya coba lakukan pada awalnya adalah ini:
Pertama, saya membuat fungsi yang mengambil 2 array dan menghasilkan array dengan semua kombinasi nilai dari dua array
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
Lalu saya biasa reduce()menerapkannya pada m salinan array yang sama:
def combs(a,m):
return reduce(comb,[a]*m)
Dan kemudian saya mengevaluasi fungsi saya seperti ini:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
Ini bekerja tetapi waaaay terlalu lambat. Saya tahu ruang parameter sangat besar, tetapi ini seharusnya tidak terlalu lambat. Saya hanya mencicipi 10 6 (sejuta) poin dalam contoh ini dan butuh lebih dari 15 detik hanya untuk membuat array values.
Apakah Anda tahu cara yang lebih efisien untuk melakukan ini dengan numpy?
Saya bisa memodifikasi cara fungsi Fmengambil argumen itu jika perlu.