2013-05-16 33 views
3

我想將數組的元素與標量進行比較,並獲取最大比較值的數組。這就是我想打電話給將數組的元素與標量進行比較並在Python中獲取最大值

import numpy as np 
np.max([1,2,3,4], 3) 

,並希望得到

array([3,3,3,4]) 

,但我得到

ValueError: 'axis' entry is out of bounds 

當我運行

np.max([[1,2,3,4], 3]) 

我得到

[1, 2, 3, 4] 

這是列表中兩個元素之一,而不是我尋找的結果。是否有與其他內置功能一樣快的Numpy解決方案?

回答

8

這是已經建成numpy的使用功能np.maximum

a = np.arange(1,5) 
n = 3 

np.maximum(a, n) 
#array([3, 3, 3, 4]) 

這不會發生變異a

a 
#array([1, 2, 3, 4]) 

如果你想變異原始數組在@ jamylak的回答中,您可以給出a作爲輸出:

np.maximum(a, n, a) 
#array([3, 3, 3, 4]) 

a 
#array([3, 3, 3, 4]) 

Docs:數組元素的

maximum(x1, x2[, out])

逐元素的最大值。
相當於np.where(x1 > x2, x1, x2)但速度更快,並做適當的廣播。

2
>>> import numpy as np 
>>> a = np.array([1,2,3,4]) 
>>> n = 3 
>>> a[a<n] = n 
>>> a 
array([3, 3, 3, 4]) 
相關問題