我正在将一个代码从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)]
不会加快代码速度。花费的时间几乎相同。