我在想如果有一種快速的方法來計算numpy數組中的最大值。例如:在numpy數組中分段最大值的pythonic方法
a = [1,2,3,4,5,6,7,8,9]
如果我們固定部分大小設置爲3,我想答案是:
b = [3,6,9]
,其中3是最大的第一部分,[1,2,3]
,6是最大的第二部分[4,5,6]
等等。
我在想如果有一種快速的方法來計算numpy數組中的最大值。例如:在numpy數組中分段最大值的pythonic方法
a = [1,2,3,4,5,6,7,8,9]
如果我們固定部分大小設置爲3,我想答案是:
b = [3,6,9]
,其中3是最大的第一部分,[1,2,3]
,6是最大的第二部分[4,5,6]
等等。
嘗試整形,然後取最大值:
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)
你的答案是正確的,但除3應該在形狀的第一個元素,或更改最大使用軸= 0。 – Fanchi
非常感謝,@Fanchi - 更正。有一個upvote! –
你也可以只寫'-1'而不是'len(a)/ 3'(如果你使用的是Python 3,NumPy會抱怨賦予'reshape'的浮點數)。 –
如果你有一個numpy數組,你可以將它重新塑造成行長度的零件大小,現在你有一個2d矩陣,你可以做row/column max。
編輯1:接受ajcr評論並將其添加到代碼中。
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]
非常感謝@Franchi –
是分區總是相同的大小? –
@ajcr是的,他們是 –