[英]Why is np nan convertible to int by `astype` (but not by `int`)?
這個問題來自一個對我來說非常不直觀的發現。 如果嘗試以下操作:
import numpy as np
print(np.array([np.nan]).astype(int))
print(int(np.array([np.nan])))
那么第一個的輸出是[-9223372036854775808]
,第二個引發ValueError: cannot convert float NaN to integer
。 我期待后來的行為,我絕對不希望有人可以將np.nan
轉換為 int。 為什么會這樣? 為什么可以使用astype
將np.nan
轉換為 int? 它有什么功能或意義嗎?
.astype
具有可選參數casting
,其默認值為'unsafe'
。 允許以下值
當一個嘗試做
import numpy as np
print(np.array([np.nan]).astype(int, casting="safe"))
一個得到以下錯誤
TypeError: Cannot cast array from dtype('float64') to dtype('int32') according to the rule 'safe'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.