【发布时间】:2017-03-12 16:40:10
【问题描述】:
我有一些数据(股票数据),需要通过对这些数据进行一些计算来操纵它。我用 numpy 数组做到了。 Numpy 比 python 内置函数快得多。但是,我的代码的执行时间比预期的要长。我的代码在下面,我用 ipython %timeit 函数对其进行了测试。结果是这样的:总执行时间为 5.44 毫秒,第二个“for”循环花费最多时间 3.88 毫秒,原因是该循环中的“np.mean”函数。因此,“np.mean”的替代方案和任何其他加快执行时间的建议都会有所帮助。
代码
data = my_class.Project.all_data["AAP_data"]
data = np.array(data[["High", "Low", "Close"]])
true_range = np.empty((data.shape[0]-1, 1))
for i in range(1, true_range.shape[0]+1):
true_range[i-1] = max((data[i, 0] - data[i, 1]), (abs(data[i, 0] - data[i-1, 2])),
(abs(data[i, 1] - data[i-1, 2])))
average_true_range = np.empty((true_range.shape[0]-13, 1))
for i in range(13, average_true_range.shape[0]+13):
lastn_tr = true_range[(i-13):(i+1)]
average_true_range[i-13] = np.mean(lastn_tr)
【问题讨论】:
标签: python arrays performance numpy vectorization