Re: [問題] numpy broadcasting 的使用
※ 引述《NMOSFET (NMOSFET)》之銘言:
: 各位大大好,小的最近遇到一個問題,
: 假設有個 numpy 二維矩陣 A,
: 我想要讓 A 矩陣裡的值,
: 以 10% 的機率設為 0,
: 於是寫了以下程式碼 :
: rows = 10
: cols = 10
: prb = np.random.random((rows, cols))
: mask = prb<0.1
: for row in range(rows):
: for col in range(cols):
: if(mask[row][col]):
: A[row][col]=0
: 有沒有能夠利用numpy的broadcasting來達到同樣的效果,
: 而不是用 for 迴圈,因為上面這種寫法,
: 我只要在if()裡面產生隨機數判斷就好,
: 不用在上面宣告 prb 和 mask 來多此一舉,
: 能否請各位大大幫我解惑,感恩!!
用for迴圈在這邊根本脫褲子放屁
如果是我的話,會用以下作法
mask = np.random.random((row, col))
mask[prb<0.1] = 0
mask[prb>=0.1] = 1
A = np.multiply(A, mask)
done.
速度要快就是要用矩陣同時處理多element(可以平行算)
如果你用for迴圈一個一個element依序處理A當中的資料
不管你用什麼方法生成random都一樣會慢
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.188.20
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1528907083.A.5B5.html
→
06/14 00:36,
7年前
, 1F
06/14 00:36, 1F
※ 編輯: sma1033 (61.231.188.20), 06/14/2018 00:45:05
推
06/14 02:39,
7年前
, 2F
06/14 02:39, 2F
→
06/14 02:39,
7年前
, 3F
06/14 02:39, 3F
→
06/14 03:27,
7年前
, 4F
06/14 03:27, 4F
→
06/14 03:27,
7年前
, 5F
06/14 03:27, 5F
→
06/14 08:39,
7年前
, 6F
06/14 08:39, 6F
推
06/14 10:59,
7年前
, 7F
06/14 10:59, 7F
推
06/14 12:11,
7年前
, 8F
06/14 12:11, 8F
→
06/14 16:01,
7年前
, 9F
06/14 16:01, 9F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章