我有以下电话:
def compute_using_AA(self):
k=0
while k<self.nobs:
L = 0
self.BB.ix[k]=0.0
while L<self.nobs:
self.BB.ix[k] = self.BB.ix[k]+self.AA[k,L]*self.detrend.ix[L]
L+=1
k+=1
在分析中我看到:
ncalls tottime percall cumtime percall filename:lineno(function)
8 1.510 0.189 59.611 7.451 Data.py:47(compute_using_AA)
其中:
type(AA)=<type 'numpy.ndarray'>
type(BB) =<class 'pandas.core.series.Series'>
以及
type(detrend)=<class 'pandas.core.series.Series'>
有什么建议可以帮助我加快速度吗?你知道吗
我看到的最明显的事情是您应该使用numpy数组操作。在内环中进行的计算不依赖于BB的值,它只是一个累加器。因此,您可以对
AA
和detrend
执行逐点乘法,对所有内容求和,并存储在BB中。实际上看起来你只是在执行两个向量的线性积,其中第二个向量总是相同的,第一个向量存储在一个矩阵中。这可以通过以下方式实现:这将产生一个与BB.ix公司其元素是detrend在AA中每行的乘积之和。你知道吗
相关问题 更多 >
编程相关推荐