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 F
mengambil argumen itu jika perlu.