第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 np.uint8 的 Python 錯誤計算

使用 np.uint8 的 Python 錯誤計算

茅侃侃 2023-02-15 17:18:44
嘗試在 Jupyter 筆記本中進行一些計算時。2我嘗試使用**或使用來提高數(shù)組的 次方np.power。兩者都會產(chǎn)生錯誤的結(jié)果??赡苁鞘裁磫栴}?如果我運行一個數(shù)字,計算是正確的。
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經(jīng)驗 獲得超5個贊

這是因為您的數(shù)組的數(shù)據(jù)類型uint8只能存儲 8 位數(shù)字,即 0-255。在那之后,溢出發(fā)生并且你的結(jié)果被包裹起來,這讓你成為x mod 256的代表x。例如,62*62=3844由于 3844 不能容納在 8 位中,因此您得到的結(jié)果是 4,即3844 mod 256. 因此,為了獲得正確的結(jié)果,您需要將數(shù)據(jù)類型更改為更長的類型,例如int. 嘗試這個:

image.astype(np.int)**2

讓我知道是否有幫助。


查看完整回答
反對 回復(fù) 2023-02-15
?
叮當貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

您的數(shù)組是 uint-8 類型,它是一個 8 位整數(shù)。計算沒問題——你看到的是溢出。


例如:


np.uint8(20) * np.uint8(20) 

輸出:


/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:1: RuntimeWarning:


overflow encountered in ubyte_scalars


144


查看完整回答
反對 回復(fù) 2023-02-15
?
一只斗牛犬

TA貢獻1784條經(jīng)驗 獲得超2個贊

一點背景。

當你說:

如果我運行一個數(shù)字 - 計算是正確的

您可能的意思是您正在使用 python 內(nèi)置int類型。Pythonint中的 是任意精度,這意味著將分配盡可能多的存儲字節(jié)以保存數(shù)據(jù)項而不會溢出。

當您使用 NumPy 數(shù)組時,情況并非如此,因為它們被實現(xiàn)為一系列值,這些值在內(nèi)存中相鄰存儲并定期間隔 - 您無法使其中一個值需要更多字節(jié),因為它無處可去“生長”。所以每個 NumPy 數(shù)組都有一個關(guān)聯(lián)的數(shù)據(jù)類型,該數(shù)據(jù)類型在創(chuàng)建數(shù)組時使用,并且其中的所有值都具有此數(shù)據(jù)類型。

使用 NumPy 數(shù)組執(zhí)行操作時,輸出數(shù)據(jù)類型的長度基于輸入中的數(shù)據(jù)類型。因為你的數(shù)組image是 datatype np.uint8,(并且2是一個可以存儲在 a 中的值np.uint8),所以操作的結(jié)果image ** 2也是 datatype np.uint8,所以值溢出,因為它們超過了 2^8。

如果你這樣做:

image.astype(np.uint16) ** 2

這將使用 datatype 的輸入數(shù)據(jù)的臨時副本進行操作np.uint16,因此輸出將是 datatype np.uint16,這足以存儲您需要的精度。


查看完整回答
反對 回復(fù) 2023-02-15
  • 3 回答
  • 0 關(guān)注
  • 811 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號