python - 在特定时间间隔内找到列表最大值的最快方法

标签 python algorithm performance python-2.7 numpy

我有一个包含 1024 个元素的列表。我想检查我确定的间隔之间列表的最大值。

例如 X 是我的 numpy 数组形式的列表。然后;

if np.amax(X[0:31]) > 200:
    print("1")
elif np.amax(X[0:31]) < 200:
    print("1a")

if np.amax(X[32:63] > 200:
    print("2")
elif np.amax(X[32:63] < 200:
    print("2a")

并且 if - elif 语句一直运行到 X[992:1023]。这意味着有 16 个间隔和 16 个 if-elif 语句。有没有更有效的方法来做到这一点?

编辑:感谢您的回答。但问题有点不同。让我试着用一个例子来解释它。这些间隔的每个结果都会点亮一个 LED。有 16 个间隔和 16 个不同的 LED。更多的最大值边界有 3 层。我没有提到它。但是比如(max<200), (200>max<500), (max > 500)。有点复杂。

最佳答案

好吧,对于这样的规则间隔,标准的 for 循环应该可以。对于初学者,这将起作用:

for x in xrange(0, 1024, 32):  # 0, 32, 64, ... , 992
    m = np.amax(X[x:x+32])
    if m > 200:
        print(str(x/32 + 1))  # 1, 2, 3, ... , 32 (not 16)
    elif m < 200:
        print(str(x/32 + 1) + 'a')  # 1a, 2a, 3a, ...

我假设您想在第一个间隔中包含索引 31。您的代码将省略索引 3163 等。

关于python - 在特定时间间隔内找到列表最大值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669219/

相关文章:

python - 有没有办法对多次执行的代码块进行计时?

算法:所有点之间的最短路径

algorithm - 快速迭代 GCD

python - 如何防止keras自定义损失函数中的负面预测

python - 我如何在 Anaconda 中正确使用 virtualenv?

python - 如何理解 pandas resample 方法中的封闭和标签参数?

javascript - 在每个循环中应用 jQuery 插件是否比以传统方式应用它的性能更差?

algorithm - 推导字符串转换规则

java - 为什么 CookieStore 的默认实现不使用树状结构?

c# - Web 服务器性能/测试工具