天天看點

numpy 利用np.std() 計算出現 inf

之前用np.std() 都很流暢,今天突然發現得出的結果是inf,檢查了資料,發現資料沒有問題,最後終于找到原因——由于變量定義的類型的原因。

計算的資料集,df的資料如下:

numpy 利用np.std() 計算出現 inf
# df是上百行幾十列的資料
# 分别對df求期望和均質

df_numpy = np.array(df,dtype=np.float16)           

df_numpy_mean = np.mean(df_numpy)        # --> 3740.0

df_numpy_std = np.std(df_numpy)          # -->inf
           

計算的std的結果為inf,應該是資料溢出了,把dtype 改為 float64 ,結果就出來了

# df是上百行幾十列的資料
# 分别對df求期望和均質

df_numpy = np.array(df,dtype=np.float64)           

df_numpy_mean = np.mean(df_numpy)        # --> 3740.0154

df_numpy_std = np.std(df_numpy)          # -->321.3843
           

可以看出,不同的資料精度,計算的結果的精度也是不一樣的,至于溢出的問題,應該是np在計算的時候,會先在原來的資料上進行操作,最後再合并輸出結果,溢出是在原始資料上發生的。

ps. 如果不對dtype進行設定的話,結果也是準确的。

繼續閱讀