我正在用Python编程一个科学应用程序,目前为止我的算法的性能很糟糕。我试图找到一种有效的方式来编写我正在做的事情。基本上,我有相乘Python:高效地生成具有不同值的向量
def get_thing(self, chi, n):
return np.sum(self.an[n][j] * pow(chi, -j) for j in xrange(1, self.j))
其中self.an[i][j]
是先前产生的阵列。然后,我将不得不这样做:
pot = np.sum(self.coeffs[n] * self.get_thing(chi, n) for n in xrange(0, self.n))
其中chi
变化和不能被缓存,因为它正在被这个类的外部产生的一个点。当然,这是非常缓慢,不是很明亮。我该如何改进?
谢谢!
谢谢。问题是chi不是一个向量,并且是为每个新的运行函数调用生成的。 – Ivan 2011-04-01 14:26:38
@如果'chi'是一个浮点数,那么'y = np.power(chi,x)'其中'x'是一个数组将产生一个数组,其中y的第i个元素y_i = chi^x_i 。这是一个广播功能。我提供的代码应该与您最初编写的'get_thing'相当,但速度要快得多。 – JoshAdel 2011-04-01 14:34:03