【发布时间】:2017-02-19 18:43:56
【问题描述】:
我有一个一维数组。我想计算每 5 个元素的最大值。困难的部分是数组的长度可以是任意值,可以是 5 的倍数,也可以不是。
例如
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
第一个5个元素是0到4,所以最大值是4;第 2 个 5 元素是 5 到 9,所以最大值是 9;最后一部分只有 3 个数字,10 到 12,最大值为 12。 预期结果将是
result = [4, 9, 12]
请注意,这个特定示例有 13 个数字,但实际上它可以是任何其他值。
我的第一个想法是,当恰好是 5 个数字的倍数(N*5)时,我可以将 arr 重塑为二维数组(N 行 5 列),然后使用 np.amax 得到每行的最大值。例如,假设 N = 4
arr = np.arange(20)
arr = arr.reshape(arr.shape[0]/5, 5)
b = np.amax(arr, axis=1)
但困难的是数组的长度不能是 5 的倍数。
如何有效地做到这一点?谢谢?
顺便说一句,我使用的是 Python 3。
【问题讨论】:
标签: arrays python-3.x max