我有一个带有很多数值的表,我知道我可以提取该列并对其进行max(),但是可能有一种使用内核方法进行此操作的方法。只是似乎无法找到它。
在我进行的测试中,您可以使用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
请注意,Tf上方是该列的1000000条目(它是Float64)。
由于问题不要求进行比较检查,因此可以省去哪里的测试…请注意,问题中建议的方法(将数据加载为numpy数组)仍然有些快(尽管差异小于3%,并且对于更大的数据集,它变得更小,我没有测试10 ^ 7行以上)。我发现使用max numpy函数的最佳结果(请参见上文)。
我也很高兴学习更有效的方法!