[英]Apply numpy.where on condition with either list or numpy.array
[英]apply max function to numpy.array
早上好! 我有一個np.array (1.1,2.2,3.3)
,我想將array
傳遞給一個簡單的ma
x function, max(0,(x-1.5)**3)
並且我希望返回一個np.array (0,0.343,5.832)
我嘗試了以下代碼並收到錯誤。
aaa = np.array([1.1, 2.2, 3.3])
max(0, (aaa-1.5)**3)
我怎樣才能得到預期的結果?
不使用列表推導,因此使用 for 循環。 您可以通過矢量化應用 function,創建一個零數組。 取其中的最大值:
import numpy as np
a = np.array((1.1,2.2,3.3))
b = np.zeros(len(a))
np.maximum((a-1.5)**3,b)
Output:
array([0. , 0.343, 5.832])
您應該用numpy.maximum()
或numpy.fmax()
替換max()
(對 NumPy 對象知之甚少)。 兩者的工作方式相似:它們比較兩個 arrays 元素,輸出最大值,廣播具有不同形狀的輸入。 它們僅在處理 NaN 的方式上有所不同:使用 np.maximum() 傳播並使用np.maximum()
np.fmax()
忽略。
在您的示例中, 0
被廣播為aaa
的形狀:
import numpy as np
aaa = np.array([1.1, 2.2, 3.3])
np.fmax(0, (aaa - 1.5) ** 3)
# array([0. , 0.343, 5.832])
x = np.array([1.1, 2.2, 3.3]) y = np.array(list(map(lambda t: max(0, (t - 1.5)**3), x)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.