之前用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進行設定的話,結果也是準确的。