1. 程式人生 > >python中如何用序列(list())轉化為矩陣(int())

python中如何用序列(list())轉化為矩陣(int())

今天練習寫python程式碼時,遇到一個有趣的寫法:

def relu_fun(x):
    x[x<0]=0
    return x

結合上下文發現x是矩陣,猜測函式功能是根據x的值若小於0,則對應位的x就置為0,否則直接返回原來x的值。

想驗證函式功能是否與自己的猜測相同,於是就自己去嘗試新增激勵。

x = [[-2, -1, 2], [1, 2 ,-1]]  
print(relu_fun(x))

然後就報錯!!
TypeError: unorderable types: list() < int()
好吧,型別錯誤。
這個錯誤對應的程式碼是:x<0
也就是說X在這裡是list型別的。
去查閱資料後,發現自己錯認為x = [[-2, -1, 2], [1, 2 ,-1]] 就是矩陣型別,其實不是,這只是list型別。
繼續找矩陣型別,廢了一些時間卻沒有找到。
偶然在網頁中見到一個函式np.mat(),好奇之下去探究,發現這個函式就能將list轉化為矩陣。
於是修改激勵程式碼如下:

x = [[-2, -1, 2], [1, 2 ,-1]]  # list型別
x = np.mat(x)  # 將list型別的x轉化為矩陣x
print(relu_fun(x))

這次輸出就對了。

[[0 0 2]
 [1 2 0]]