【问题标题】:How can I optimize this X-Ray selection cycle?如何优化此 X 射线选择周期?
【发布时间】:2016-04-03 11:59:38
【问题描述】:

我有以下代码

facts = []
with tqdm(total=6022484) as pbar:
for lat in dp.lat:
    for lon in dp.lon:
        for time in dp.time:
            fact = {\
                    'datetime':datetime.datetime.fromtimestamp(float(time.values)/1000000000.),\
                    'loc':[float(lon.values),float(lat.values)],\
                    'temp':celsius(dp.sel(lat=lat.values,lon=lon.values,time=time.values).t2m.values),\
                    'rh':round(dp.sel(lat=lat.values,lon=lon.values,time=time.values).rh.values,1),\
                    'rain':round(dp.sel(lat=lat.values,lon=lon.values,time=time.values).rain.values,1)
                   }
            facts.append(fact)
            pbar.update()

制作大约。每秒 100 次迭代。能不能做到最好?

【问题讨论】:

    标签: python python-xarray


    【解决方案1】:

    通常这种方法会非常缓慢。与其在 python 中遍历这些,不如使用标准函数,这些函数以向量化的方式对值进行操作。

    例如,dp.lat = dp.lat.astype('float')dp.rain = np.round(dp.rain, 0)

    这是一个类似的讨论:What is the most efficient way to loop through dataframes with pandas?

    【讨论】:

    • 我发现转换为 Dataframe 非常快。现在的问题是在插入 Mongo Collection 之前将数据帧转换为 dict。我有大约 600 万行
    • DataFrame.to_dict()?
    • 但是从 DataFrame 到 dict 的转换也会很慢 - 你并没有通过快速放入 DataFrame 来显着提高速度
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多