我想从一个numpy数组中获取多个范围内的最大值和最小值。我找到了this解决方案,当范围均匀时,只获得多个范围的最大值。然而,我的范围并不总是一致的。
因此,如果有一个数组的数字为1-9,范围是索引[0-2], [3-6], [7-8]
,我想从每个范围中获得最大值和最小值。
我已经在下面发布了一个可能的解决方案,但我想知道是否有一个更pythonic的方法。
import numpy as np
a = np.array([1,2,3,4,5,6,7,8,9])
slices = [np.arange(0,3), np.arange(3,7), np.arange(7,9)]
max = np.empty(0)
min = np.empty(0)
for slice in slices:
max.concatenate(np.max(a[slice]))
min.concatenate(np.min(a[slice]))
min_and_max = np.concatenate(min,max)
2条答案
按热度按时间eqzww0vc1#
假设输入数组是排序的,你可以使用
numpy.searchsorted
:输出:
mspsb9vt2#
ufunc.reduceat
就是这样的: