我想从一个numpy数组中获取多个范围内的最大值和最小值。我找到了this解决方案,当范围均匀时,只获得多个范围的最大值。然而,我的范围并不总是一致的。
因此,如果有一个数组的数字为1-9,范围是索引[0-2], [3-6], [7-8]
,我想从每个范围中获得最大值和最小值。
我在下面发布了一个可能的解决方案,但我想知道numpy是否有一个方法可以在没有循环的情况下做到这一点。
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 = np.concatenate([max, np.max(a[slice])])
min = np.concatenate([min, np.min(a[slice])])
min_and_max = np.concatenate([min,max])
1条答案
按热度按时间pjngdqdw1#
ufunc.reduceat
就是这样的: