加快这段代码片段的速度

时间:2018-01-19 10:14:29

标签: python matlab

我正在将一个代码从Matlab重写为Python。

Matlab代码如下所示:

validIntSize = length(prices1)-125; %valid interval size
interval720s = zeros(validIntSize,120+1);
interval360s = zeros(validIntSize,60+1);
interval180s = zeros(validIntSize,30+1);

for i = 1:intJump:validIntSize
    interval180s(i,:) = [prices1(i:i+29),priceDiff(i+29)]; 
    interval360s(i,:) = [prices1(i:i+59),priceDiff(i+59)]; 
    interval720s(i,:) = [prices1(i:i+119),priceDiff(i+119)];  
end

简而言之,它填充了这个巨大矩阵的行。我通过在Python中附加来实现这一点,这需要太长时间:

 intervals = []
 for mean in self.means: intervals.append([])

 for i in range(stop_point):
     for idx, mean in enumerate(self.means):
          intervals[idx].append(list(prices1[i:(i+mean)])+[price_diff[i+mean]])

我怀疑这是由于我正在使用的追加方法?

P.S。在Matlab中大约需要2秒钟,在Python中大约需要2分钟。

P.P.S将我的代码更改为列表理解,如评论中所示:

for idx, k_mean in enumerate(self.k_means):
    intervals[idx] = [list(prices1[i:(i+k_mean)])+[price_diff[i+k_mean]] for i in range(stop_point)]

不会加快代码速度。花费的时间几乎相同。

0 个答案:

没有答案