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

計算的數據集,df的數據如下:

# 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進行設置的話,結果也是準確的。

Tags: