ฉันพยายามเรียกใช้พื้นที่พารามิเตอร์ของฟังก์ชันพารามิเตอร์ 6 ตัวเพื่อศึกษาพฤติกรรมเชิงตัวเลขก่อนพยายามทำสิ่งที่ซับซ้อนด้วยดังนั้นฉันจึงค้นหาวิธีที่มีประสิทธิภาพในการทำสิ่งนี้
ฟังก์ชั่นของฉันใช้ค่าทศนิยมที่กำหนดให้อาร์เรย์ 6-dim 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()
กับสิ่งนั้นกับสำเนาของอาร์เรย์เดียวกัน:
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 (ล้าน) จุดในตัวอย่างนี้และมันก็ใช้เวลากว่า 15 values
วินาทีเพียงเพื่อสร้างอาร์เรย์
คุณรู้วิธีที่มีประสิทธิภาพมากขึ้นในการทำเช่นนี้ด้วย numpy?
ฉันสามารถปรับเปลี่ยนวิธีที่ฟังก์ชั่นF
ใช้เป็นอาร์กิวเมนต์ถ้าจำเป็น