我完全是python的新手。我試圖做一個非常簡單的事情,評估一個非平凡的函數,它將浮點數作爲2D網格上的輸入。下面的代碼完全符合我的要求,但由於double for循環,所以速度很慢。在python中矢量化一個簡單的函數:避免雙循環
import numpy as np
from galpy.potential import RazorThinExponentialDiskPotential
R = np.logspace(0., 2., 10)
z=R
#initialize with default values for this example
potfunc=RazorThinExponentialDiskPotential()
pot=np.zeros((R.size, z.size))
for i in range(0, R.size):
for j in range(0, z.size):
pot[i,j]=potfunc(R[i],z[j])
最後,陣列鍋包含我想要的所有信息,但現在我想提高效率。我知道純Python很慢,特別是在循環(比如IDL)上,所以我檢查了np.vectorize,但它只是一個蟒蛇循環。 問題是,potfunc似乎不接受數組,但只是普通的標量。
我該如何優化這個簡單的程序?
非常感謝提前。
不幸的是potfunc只接受標量,而不是矢量... – andrea