close

np運算總是不太熟

今天再做一個矩陣的二值化的時候找了好久才發現的資料順手記下來

np.random.seed(0)
np.set_printoptions(precision=3)
a = np.random.rand(4, 4)
threshold, upper, lower = 0.5, 1, 0

A現在是:
array([[ 0.02 , 0.833, 0.778, 0.87 ],
       [ 0.979, 0.799, 0.461, 0.781],
       [ 0.118, 0.64 , 0.143, 0.945],
       [ 0.522, 0.415, 0.265, 0.774]])

現在我可以激發這兩種表達:
a[a>threshold] = upper
a[a<=threshold] = lower

實現我想要的:
array([[ 0., 1., 1., 1.],
       [ 1., 1., 0., 1.],
       [ 0., 1., 0., 1.],
       [ 1., 0., 0., 1.]])

但是,有沒有一種方法可以只用一個表達就可以做到這一點呢?
最佳答案

我們可以考慮:

np.where(a>threshold, upper, lower)
Out[6]:
array([[0, 1, 1, 1],
       [1, 1, 0, 1],
       [0, 1, 0, 1],
       [1, 0, 0, 1]])

 


arrow
arrow
    文章標籤
    python numpy 矩陣 運算
    全站熱搜
    創作者介紹
    創作者 低階ㄇㄋ 的頭像
    低階ㄇㄋ

    蟲匯聚之所

    低階ㄇㄋ 發表在 痞客邦 留言(0) 人氣()