【问题标题】:How to improve the speed of this for loop in python如何在python中提高这个for循环的速度
【发布时间】:2018-07-29 07:15:28
【问题描述】:
for i in range(0, num):
    for j in range(0, 10000):
        one_arr[int(j/100), j%100, :] = all_data[i].iloc[j,2:16]

基本上,我的这部分代码运行得太慢了。我认为 for 循环是运行时间慢的原因。有没有更快的方法来完成同样的任务?

all_data 是一个列表,其元素是熊猫数据框。

【问题讨论】:

  • 有什么办法可以避免嵌套 for 循环?嵌套循环会自动将此代码的运行时间转换为 O(n^2)。 num 是不是很大?
  • 哪个版本的python?
  • 赋值的 RHS 是一个数组,因此如果您计算 LHS 索引,则可以直接赋值。 one_arr[<x indices>, <y indices>] = all_data[i].iloc[:, 2:16] 但我认为你有一个错误,因为这会覆盖同一个数组。
  • 您每次都覆盖同一块one_arr(切片取决于j,而不是i)。所以你可以简单地移除外循环并设置i = num - 1,然后运行一次内循环。如果num 很大,这将大大加快速度。
  • num不是一个很大的数,像500

标签: python pandas numpy for-loop


【解决方案1】:

尝试使用Pypy,它会将您的代码翻译成机器语言,使其运行得更快。创建脚本需要时间,但它运行速度快且与任何机器兼容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多