我有一個 Numpy 陣列,我想用它statistics.stdev()來計算它的標準偏差。這個操作的輸出有點出乎意料。
import numpy as np
from statistics import stdev, pstdev
>>> a = np.array([0, 1, 2, 3])
>>> stdev(a)
1.0
這既不是樣本標準差
>>> stdev([0, 1, 2, 3])
1.2909944487358056
也不是總體標準差
>>> pstdev([0, 1, 2, 3])
1.118033988749895
我想知道是否statistics.stdev()不應該與 Numpy 陣列一起作業,或者是否有一些潛在的機制導致了這種行為?
請注意,這np.std()適用于串列和 Numpy 陣列。
>>> np.std([0, 1, 2, 3])
1.118033988749895
>>> np.std(np.array([0, 1, 2, 3]))
1.118033988749895
兩者都給出了預期的總體標準偏差。
uj5u.com熱心網友回復:
這是因為type數字,鍵入數字中list的float64,但數字的型別numpy.array是int64你能得到你想要用得到list變革dtype中NumPy.array,以float64象下面這樣:
>>> a = np.array([0, 1, 2, 3])
>>> a.dtype
dtype('int64')
>>> statistics.stdev(a)
1.0
>>> a = np.array([0, 1, 2, 3], dtype=float)
>>> a.dtype
dtype('float64')
>>> statistics.stdev(a)
1.2909944487358056
>>> statistics.stdev([0, 1, 2, 3])
1.2909944487358056
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/352631.html
上一篇:numpy可以通過將一維陣列中的n個元素與另一個一維陣列的每個元素相加來創建n個陣列嗎?
下一篇:找到矩陣單位根的(部分)串列
