1 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
Numpy 允許您直接訪問(wèn)數(shù)組中的字節(jié)。對(duì)于簡(jiǎn)單的情況,您可以直接將 nans 視為整數(shù):
quiet_nan1 = np.uint64(0b0111111111111000000000000000000000000000000000000000000000000000)
x = np.arange(10, dtype=np.float64)
x.view(np.uint64)[5] = quiet_nan1
x.view(np.uint64)
現(xiàn)在您只需比較確切 NaN 的位模式的元素即可。該版本將保留形狀,因?yàn)樵卮笮∠嗤?/p>
float128一個(gè)更通用的解決方案是使用字節(jié),它可以讓您使用在大多數(shù)系統(tǒng)上沒(méi)有相應(yīng)整數(shù)模擬的類(lèi)型:
quiet_nan1l = np.frombuffer((0b01111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000).to_bytes(16, 'big'))
x = np.arange(3 * 4 * 5, dtype=np.float128).reshape3, 4, 5)
x.view(np.uint8).reshape(*x.shape, 16)[2, 2, 3, :] = quiet_nan1l
x.view(np.uint8).reshape(*x.shape, 16)
最終的重塑并不是絕對(duì)必要的,但它非常方便,因?yàn)樗刂詈笠粋€(gè)維度隔離了原始數(shù)組元素。
在這兩種情況下,修改視圖都會(huì)修改原始數(shù)組。這就是一個(gè)觀點(diǎn)的觀點(diǎn)。
當(dāng)然,不言而喻(這就是我這么說(shuō)的原因),這適用于您可能想要分配或測(cè)試的任何其他位模式,而不僅僅是 NaN。
添加回答
舉報(bào)