jag*_*uli 2 python sql pytables
我有一个包含大量数值的表,我知道我可以提取列并对其执行max(),但是可能有一种方法可以使用in-kernel方法来实现.但似乎无法找到它.
在我做过的测试中,你可以使用iterrows方法而不是以下方式获得超过两倍的结果:
In [117]: timeit max(row['timestamp'] for row in table.iterrows(stop=1000000))
1 loops, best of 3: 1 s per loop
In [118]: timeit max(row['timestamp'] for row in table.where('(timestamp<=Tf)'))
1 loops, best of 3: 2.21 s per loop
In [120]: timeit max(frames.cols.timestamp[:1000000])
1 loops, best of 3: 974 ms per loop
In [121]: timeit np.max(frames.cols.timestamp[:1000000])
1 loops, best of 3: 876 ms per loop
Run Code Online (Sandbox Code Playgroud)
注意,上面的Tf是该列的1000000条目(它是Float64).
由于问题没有要求进行比较检查,因此可以节省测试...注意问题中提出的方法(将数据加载为numpy数组)仍然有点快(尽管差异小于3%并且对于较大的数据集,进一步缩小,我没有测试超过10 ^ 7行).我发现使用max numpy函数的最佳结果(见上文).
我也很乐意学习更有效的方法!
| 归档时间: |
|
| 查看次数: |
2118 次 |
| 最近记录: |