python / numpy / pandas最快的方法应用扩展计算的算法

时间:2014-12-13 18:58:12

标签: python numpy pandas scipy

假设我有从2000年1月1日到2011年1月1日的时间序列,并且对于每个日期,我有一些浮动值...这是在熊猫数据帧中。

我想进行一些计算。假设N是数据点的数量,i是当前数据点。伪代码:

for i in n:
        some_calc(V0:Vi) + some_calc(Vi:Vn)

我可以轻松实现此计算,但我认为对于大型集合而言,我会发现性能问题。我认为部分原因在于,由于数据容器是一个Dataframe,切片会创建新系列,而在some_calc中,会发生更多切片。

什么是做某事的有效方式?我可以使用numpy避免循环吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码来提高代码效果:

result = []
for item in item_list:
    new_item = do_something_with(item)
    result.append(new_item)

见下面的例子:

# finding the max prior to the current item
a = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
results = []
current_max = 0
for i in a:
    current_max = max(i, current_max)
    results.append(current_max)
# results = [3, 4, 6, 6, 6, 9, 9, 9, 9, 9]