【发布时间】:2020-11-02 05:17:12
【问题描述】:
我无法让我的代码快速运行。
在我的代码上使用逐行分析器后,我发现以下几行是我大部分效率低下的原因:
import numpy as np
import datetime
timestamps = np.array(timestamps)
mask = (minTime <= timestamps) & (timestamps <= maxTime)
count = np.sum(mask)
timestamps 以日期时间列表开头,minTime 是单个日期时间。
时间戳的示例值:
minTime = datetime.datetime(2020, 5, 21, 2, 27, 26)
timestamps = [datetime.datetime(2020, 5, 21, 2, 27, 26), datetime.datetime(2020, 5, 21, 2, 27, 26),
datetime.datetime(2020, 5, 21, 2, 27, 26), datetime.datetime(2020, 5, 21, 2, 30, 55),
datetime.datetime(2020, 5, 21, 2, 30, 55), datetime.datetime(2020, 5, 21, 2, 30, 55),
datetime.datetime(2020, 5, 21, 2, 34, 26), datetime.datetime(2020, 5, 21, 2, 34, 26),
datetime.datetime(2020, 5, 21, 2, 34, 26), datetime.datetime(2020, 5, 21, 2, 39, 26),
datetime.datetime(2020, 5, 21, 2, 39, 26), datetime.datetime(2020, 5, 21, 2, 39, 26)]
有没有更高效的方法来重写上面的代码?
感谢任何建议。
【问题讨论】:
-
'datetimes' 和 'date time' 含糊不清。显示一些创建此数组的实际代码。我也看不出这样的行如何适合“迭代/循环/映射/减少/过滤”上下文。
-
请提供示例输入。
-
迭代部分不是必需的,所以我删除了它。我已经添加了示例输入
-
您可能(或现在可能)从 numpy datetime64 或 pandas 时间戳对象数组中榨取更多效率
标签: python arrays numpy boolean boolean-logic