不适合矢量化的循环。我们能快点吗?

2024-10-04 01:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

代码正常

这是我正在做的循环类型的一个快速示例。我所做的是每天引入价值观,有一个点(C)引用其中的一些价值观,最终到达Z,这是我一天结束时的状态。然后我们从新的一天开始,在这里C引用Z(前一天),我们还有一些相互依赖的活动(比如B有效地引用前一个C)

问题是这能做得更快吗?与我构建的其他东西不同,这并不容易实现向量化。然而,我想知道是否有创造性的方法或我错过的东西,可以加快这一点。附加的循环非常慢。你知道吗

再次感谢!你知道吗

import numpy as np
import pandas as pd
from collections import defaultdict
global new_dcty
new_dcty = defaultdict(list)

temp = np.zeros((10000,5))
temp = temp + 1
table = pd.DataFrame(temp, columns=['aa','bb','cc','dd','ee'])


def big_loop(table, days = 10000):

    Z = 0
    C = 0

    for day in range (1,days):

        A = table['aa'].iloc[(day-1)]
        new_dcty["aa"].append(A)

        B = table['bb'].iloc[(day-1)] - C
        new_dcty['bb'].append(B)

        C = Z + min(A, B)
        new_dcty['cc'].append(C)

        D = table['dd'].iloc[(day-1)]
        new_dcty['dd'].append(D)

        E = table['ee'].iloc[(day-1)]
        new_dcty['ee'].append(E)

        Z = C - D - E
        new_dcty['zz'].append(Z)

    #load dictionary into dataframe
    f = pd.DataFrame.from_dict(new_dcty)
    return f

results = big_loop(table)

print(results)

Tags: importnewastabletempddeeaa