Tôi đang cố gắng chạy trên không gian tham số của hàm 6 tham số để nghiên cứu hành vi số của nó trước khi thử làm bất cứ điều gì phức tạp với nó vì vậy tôi đang tìm kiếm một cách hiệu quả để làm điều này.
Hàm của tôi lấy các giá trị float được cung cấp một mảng numpy 6 mờ làm đầu vào. Những gì tôi đã cố gắng làm ban đầu là thế này:
Đầu tiên tôi tạo một hàm lấy 2 mảng và tạo một mảng với tất cả các kết hợp các giá trị từ hai mảng
from numpy import *
def comb(a,b):
c = []
for i in a:
for j in b:
c.append(r_[i,j])
return c
Sau đó, tôi thường reduce()
áp dụng điều đó cho m bản sao của cùng một mảng:
def combs(a,m):
return reduce(comb,[a]*m)
Và sau đó tôi đánh giá chức năng của mình như thế này:
values = combs(np.arange(0,1,0.1),6)
for val in values:
print F(val)
Điều này hoạt động nhưng nó quá chậm. Tôi biết không gian của các tham số là rất lớn, nhưng điều này không nên quá chậm. Tôi chỉ lấy mẫu 10 6 (một triệu) điểm trong ví dụ này và phải mất hơn 15 giây chỉ để tạo mảng values
.
Bạn có biết cách nào hiệu quả hơn để làm điều này với numpy?
Tôi có thể sửa đổi cách hàm F
lấy tham số nếu cần.