Fungsi NumPy np.stdmengambil parameter opsional ddof: "Delta Degrees of Freedom". Secara default, ini 0. Setel 1untuk mendapatkan hasil MATLAB:
>>> np.std([1,3,4,6], ddof=1)
2.0816659994661326
Untuk menambahkan lebih banyak konteks, dalam perhitungan varians (yang deviasinya standarnya adalah akar kuadrat) kita biasanya membagi dengan jumlah nilai yang kita miliki.
Tetapi jika kita memilih sampel acak dari Nelemen dari distribusi yang lebih besar dan menghitung varians, pembagian dengan Ndapat menyebabkan perkiraan varian yang sebenarnya terlalu rendah. Untuk mengatasinya, kita dapat menurunkan angka yang kita bagi ( derajat kebebasan ) ke angka yang kurang dari N(biasanya N-1). The ddofParameter memungkinkan kita mengubah pembagi dengan jumlah yang kita tentukan.
Kecuali diberitahu sebaliknya, NumPy akan menghitung penduga bias untuk varians ( ddof=0, dibagi dengan N). Inilah yang Anda inginkan jika Anda bekerja dengan seluruh distribusi (dan bukan subset nilai yang telah diambil secara acak dari distribusi yang lebih besar). Jika ddofparameter diberikan, NumPy akan membagi dengan N - ddof.
Perilaku default MATLAB stdadalah memperbaiki bias untuk varians sampel dengan membaginya dengan N-1. Ini menghilangkan beberapa (tapi mungkin tidak semua) bias dalam standar deviasi. Ini mungkin yang Anda inginkan jika Anda menggunakan fungsi tersebut pada sampel acak dari distribusi yang lebih besar.
Jawaban bagus dari @hbaderts memberikan detail matematis lebih lanjut.
std([1 3 4 6],1)setara dengan default NumPynp.std([1,3,4,6]). Semua ini cukup jelas dijelaskan dalam dokumentasi untuk Matlab dan NumPy, jadi saya sangat menyarankan OP untuk membaca itu di masa mendatang.