所以我一直創造numpy的陣列那樣:當我爲給定的dtype設置的值太大時會發生什麼?
>>> u = np.zeros(10, int)
>>> v = np.zeros(10, float)
我一直無視有關最大允許值,直到如今。我一直認爲它會簡單地工作。如果沒有,我會得到OverflowError
,然後我會找到一些解決方法,如採取對數。
但最近我開始使用其他dtypes:
>>> v8 = np.zeros(10, np.uint8)
>>> v8[0] = 2 ** 8 - 1
>>> v8[1] = 2 ** 8
>>> v8
>>> array([255, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)
好了,所以當我分配比255這是一個有點嚇人更大的價值我沒有得到任何警告。
所以我的問題是:
- 當我使用類型
int
和float
陣列,是有可能,我設置的值過大(導致完全錯誤的計算)不知道呢? - 如果我想使用
uint8
,我必須手動檢查所有分配的值是否在[ 0, 255 ]
?