簡體   English   中英

將最大 function 應用於 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM