NumPy işlevi np.stdisteğe bağlı bir parametre alır ddof: "Delta Serbestlik Derecesi". Varsayılan olarak bu 0. 1MATLAB sonucunu elde etmek için ayarlayın :
>>> np.std([1,3,4,6], ddof=1)
2.0816659994661326
Biraz daha bağlam eklemek için, varyans hesaplamasında (standart sapması kareköktür) tipik olarak sahip olduğumuz değerlerin sayısına böleriz.
Ancak, Ndaha geniş bir dağılımdan rastgele bir eleman örneği seçip varyansı hesaplarsak, bölme N, gerçek varyansın olduğundan az tahmin edilmesine yol açabilir. Bunu düzeltmek için, böldüğümüz sayıyı ( serbestlik derecesini ) N(genellikle N-1) den daha küçük bir sayıya indirebiliriz . ddofParametresi bize belirttiğiniz miktar böleni değiştirmek verir.
Aksi belirtilmedikçe, NumPy varyans için yanlı tahmin ediciyi hesaplayacaktır ( ddof=0bölerek N). Tüm dağıtımla çalışıyorsanız (ve daha büyük bir dağıtımdan rastgele seçilmiş bir değer alt kümesi değil), istediğiniz şey budur. Eğer ddofparametre verilir, NumPy böler N - ddofyerine.
MATLAB'ın varsayılan davranışı, stdörneklem varyansı için önyargıyı bölerek düzeltmektir N-1. Bu, standart sapmadaki önyargının bir kısmından (ancak muhtemelen hepsinden değil) kurtulur. Bu işlevi, daha büyük bir dağılımın rastgele bir örneğinde kullanıyorsanız, büyük olasılıkla istediğiniz şey olacaktır.
@Hbaderts'ın güzel cevabı daha fazla matematiksel ayrıntı verir.
std([1 3 4 6],1)NumPy'nin varsayılanına eşdeğerdirnp.std([1,3,4,6]). Tüm bunlar Matlab ve NumPy belgelerinde oldukça açık bir şekilde açıklanmıştır, bu nedenle OP'nin gelecekte bunları okuduğundan emin olmasını şiddetle tavsiye ederim.