logo
Loading...

作業一 請問關於np.nditer(Z)執行? - Cupoy

為什麼用i+=1的縮寫會出現值錯誤?

作業一 請問關於np.nditer(Z)執行?

2021/09/11 上午 09:39
林聖智
觀看數:8
回答數:1
收藏數:1

![38.png](http://kwassistfile.cupoy.com/0000017BD27EAE2F000000066375706F795F72656C656173655155455354/1630891912449/large) 為什麼用i+=1的縮寫會出現值錯誤?

回答列表

  • 2021/09/11 上午 11:54
    王健安
    贊同數:1
    不贊同數:0
    留言數:1

    林聖智您好, 助教等等會依序從 i = i+1與 i+= 1 的不同、ndarray有讀取或寫入的功能以及您的問題做解答。 i = i+1 是指先將 i 讀取並加上1後,再把舊的 i 覆蓋成新的 i , 而 i += 1 會直接更動 i 本身的數值。 ndarray 中有讀取與寫入的權限設定, 可以從 np.flags(i) 中看出權限設定, 當權限僅限於讀取時,就無法進行寫入的動作。 nditer() 迭代出來的 i 僅有讀取功能, 沒有寫入功能, 因此只能先將 i 進行讀取並進行運算後,再取代掉舊的 i(i = i+1), 並無法直接更動 i (i += 1), 因此使用 i += 1時會有錯誤。