【发布时间】: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