给定一个numpy数组,比如a = [0, 3, 2, 4, 0, 2, 3, 1, 1, 6, 2]
,有没有一种简单的方法来记录每3个值的最大值?数组的长度不能是3的倍数。在这种情况下,结果应该是b = [3, 4, 3, 6]
。在
我想到了一些
b = [max(a[k:k+3]) for k in range(0, len(a), 3)
但它没有考虑最后一个3的倍数之后的值(应该是这样)。在
我还考虑过重新排列numpy数组,使其具有3*n行,并使用numpy模块沿着适当的轴获取maxima,但是,再次声明,我不确定如何处理最后乘以3之后的值。在
首先使用
np.pad
然后
^{pr2}$reshape
和max
为了推广这一点,只需计算填充,以便将其重塑为所需的维度。在
为了最小化需要进行的重新分配量,可以计算所有元素的最大值,然后再计算余数的最大值。此解决方案不那么简单,但不会创建不必要的数据副本:
方法
我们可以使用^{} 来执行这样的分组/内部归约操作。因此,要在每个间隔内得到
maximum
值,我们需要-样本运行-
^{pr2}$方法2
这是另一个带有
slicing
-样本运行-
相关问题 更多 >
编程相关推荐