我必须将一个非常大(170万条记录)的csv文件读取到numpy记录数组中。其中两列是需要转换为datetime对象的字符串。另外,有一列需要是这些日期时间之间的计算差。在
目前,我创建了一个自定义迭代器类来构建列表列表。然后我使用np.rec.fromrecords公司把它转换成数组。在
但是,我注意到日期时间.strptime()很多次真的让事情变慢了。我想知道有没有更有效的方法来进行这些转换。时间在一个日期内精确到秒。所以,假设时间是均匀分布的(它们不是),看起来我做了20倍的必要转换(170万/(60×60×24)。在
在进行不必要的转换之前,将转换后的值存储在dictionary{stringdates:datetime obj}中并首先检查字典,会不会更快?在
还是应该使用numpy函数(我对numpy库还是新手)?在
我可能是错的,但在我看来,你的问题是重复出现,因此做同样的转换比必要的次数要多。如果这种解释是正确的,那么最有效的方法将取决于重复的次数。如果你在170万次重复中有10万次重复,那么写160万次字典并检查170万次可能不会更有效,因为它可以进行160万次+170万次的读/写操作。但是,如果你有100万次重复,那么返回一个答案(O(1)),而不是进行额外的百万次转换,会更快。在
总之,python的速度非常慢,如果使用170万个输入,您可能根本无法加快速度。至于numpy函数,我也不太精通,但我相信网上有一些很好的文档。在
相关问题 更多 >
编程相关推荐