在numpy数组中部分最大的pythonic方式

时间:2016-02-07 12:52:38

标签: python numpy max

我想知道是否有一种快速计算numpy数组中的分段最大值的方法。例如:

a = [1,2,3,4,5,6,7,8,9]

如果我们将零件尺寸固定为3,我希望答案是:

b = [3,6,9]

其中3是a的第一部分[1,2,3]的最大值,6是第二部分[4,5,6]的最大值,依旧等等。

2 个答案:

答案 0 :(得分:3)

如果你有一个numpy数组,你可以将它重新整形为零件大小作为行长,现在你有一个2d矩阵,你可以做行/列最大。

编辑1:发表评论并将其添加到代码中。

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
a = a.reshape((-1, 3))
print a.max(1)

输出:

[ 3  6  9 12]

答案 1 :(得分:3)

尝试重塑,然后取最大值:

import numpy as np

a = np.array([1,2,3,4,5,6,7,8,9])
>>> a.reshape((len(a) / 3, 3)).max(axis=1)
array([3, 6, 9])

如果数组的长度不能被数字整除,那么你的问题需要更多的定义来说明你在这种情况下的意思。

编辑 @ajcr在下面的评论中显示了一种更好的重塑形式:

>>> a.reshape((-1, 3)).max(axis=1)