numpy vectorize max在数组

时间:2016-08-12 14:08:12

标签: python numpy vectorization

如何摆脱python for循环? t通常不是均匀间隔的(仅在简单示例中)。使用熊猫的解决方案也很好。

import numpy as np

n = 100
t = np.arange(n)
y = np.arange(n)
edges = np.array([2., 5.5, 19, 30, 50, 72, 98])

indices = np.searchsorted(t, edges)

maxes = np.zeros(len(edges)-1)
for i in range(len(edges)-1):
    maxes[i] = np.max(y[indices[i]:indices[i+1]])

print(maxes)

更新: 我认为reduceat可能会这样做,但我不懂语法。

1 个答案:

答案 0 :(得分:3)

reduceat很好地完成了这项工作。我在30分钟前就不知道这个功能了。

maxes = np.maximum.reduceat(y, indices)[:-1]