從這兩個 lambda 函式開始
import numpy as np
relu = (lambda x: np.maximum(0, x),
lambda x: 1 if x > 0 else 0)
顯然,當我傳遞一個數字時,這兩個函式可以正常作業,但是當我傳遞一個陣列/串列時,relu[0] 起作用但 relu[1] 不起作用。
a = [1, 2, 3, 4]
print(relu[0](a)) # this one works
print(relu[1](a)) # not works
print([relu[1](v) for v in a]) # also works
uj5u.com熱心網友回復:
許多 numpy 函式,例如maximum,接受array-like引數,即可以轉換為 numpy 陣列的型別,并且 numpy 會自動將它們轉換為 numpy 陣列。
a = [1, 2, 3, 4]
print(relu[0](a)) # a is converted from list to numpy array
你的第二個例子引發了一個 TypeError
TypeError: '>' not supported between instances of 'list' and 'int'
因為你不能比較一個串列和一個整數。
print(relu[1](a)) # compare a list to an integer: Fail
print([relu[1](v) for v in a]) # compare an integer to an integer: OK
uj5u.com熱心網友回復:
你可以,如果你愿意的話
np.where(x > 0, 1, 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/351766.html
上一篇:按元素添加numpy陣列串列
