Sebenarnya, dokumentasi tidak membuatnya segera jelas, sejauh yang saya bisa lihat. Tidak mengatakan tidak mungkin untuk mengatakannya, tetapi saya pikir pertanyaan ini berlaku untuk Stack Overflow.
BlackVegetable
1
numpy.mean: Mengembalikan rata-rata elemen array.
joaquin
@ joaquin: "Hitung rata-rata aritmatika di sepanjang sumbu yang ditentukan." vs "Hitung rata-rata tertimbang di sepanjang sumbu yang ditentukan."?
Blender
@Bender benar. Saya hanya mencoba membuat semacam tanggapan lucu terhadap komentar Anda karena jika saya mengikuti instruksi Anda, hal pertama yang saya baca di dokumen untuk numpy.mean adalah numpy.mean: Mengembalikan rata-rata elemen array yang lucu jika Anda mencari jawaban untuk pertanyaan OP.
joaquin
Jawaban:
181
np.average mengambil parameter bobot opsional. Jika tidak disediakan mereka setara. Lihatlah kode sumber: Mean , Average
Mengapa mereka menawarkan dua fungsi yang berbeda? Sepertinya mereka harus menawarkan np.averagekarena weightssudah opsional. Tampaknya tidak perlu dan hanya berfungsi untuk membingungkan pengguna.
Geoff
6
@ Geoff Saya lebih suka mereka melempar NotImplementedException untuk "rata-rata", untuk mendidik pengguna bahwa rata-rata aritmatika tidak identik dengan "rata-rata".
FooBar
27
np.mean selalu menghitung rata-rata aritmatika, dan memiliki beberapa opsi tambahan untuk input dan output (misalnya tipe data apa yang digunakan, di mana harus menempatkan hasilnya).
np.averagedapat menghitung rata-rata tertimbang jika weightsparameter diberikan.
Selain perbedaan yang telah dicatat, ada perbedaan lain yang sangat penting yang baru saja saya temukan dengan cara yang sulit: tidak seperti np.mean, np.averagetidak mengizinkan dtypekata kunci, yang penting untuk mendapatkan hasil yang benar dalam beberapa kasus. Saya memiliki array presisi tunggal yang sangat besar yang diakses dari h5file. Jika saya mengambil nilai rata-rata sepanjang sumbu 0 dan 1, saya mendapatkan hasil yang sangat salah kecuali jika saya menentukan dtype='float64':
Sayangnya, kecuali Anda tahu apa yang harus dicari, Anda tidak dapat selalu mengatakan bahwa hasil Anda salah. Saya tidak akan pernah menggunakan np.averagelagi karena alasan ini tetapi akan selalu digunakan np.mean(.., dtype='float64')pada array besar. Jika saya ingin rata-rata tertimbang, saya akan menghitungnya secara eksplisit menggunakan produk dari vektor bobot dan array target dan kemudian salah satu , np.sumatau np.meansesuai (dengan presisi yang sesuai juga).
Jawaban:
np.average mengambil parameter bobot opsional. Jika tidak disediakan mereka setara. Lihatlah kode sumber: Mean , Average
np.berarti:
np.rata-rata:
sumber
np.average
karenaweights
sudah opsional. Tampaknya tidak perlu dan hanya berfungsi untuk membingungkan pengguna.np.mean
selalu menghitung rata-rata aritmatika, dan memiliki beberapa opsi tambahan untuk input dan output (misalnya tipe data apa yang digunakan, di mana harus menempatkan hasilnya).np.average
dapat menghitung rata-rata tertimbang jikaweights
parameter diberikan.sumber
Dalam beberapa versi numpy ada perbedaan penting yang harus Anda ketahui:
average
jangan mengambil topeng akun, jadi hitung rata-rata seluruh set data.mean
mengambil topeng akun, jadi hitung rata-rata hanya di atas nilai yang belum kedok.sumber
np.ma.average
berfungsi. Juga, ada laporan bug .Dalam doa Anda, kedua fungsi itu sama.
average
dapat menghitung rata-rata tertimbang sekalipun.Tautan dokumen:
mean
danaverage
sumber
Selain perbedaan yang telah dicatat, ada perbedaan lain yang sangat penting yang baru saja saya temukan dengan cara yang sulit: tidak seperti
np.mean
,np.average
tidak mengizinkandtype
kata kunci, yang penting untuk mendapatkan hasil yang benar dalam beberapa kasus. Saya memiliki array presisi tunggal yang sangat besar yang diakses darih5
file. Jika saya mengambil nilai rata-rata sepanjang sumbu 0 dan 1, saya mendapatkan hasil yang sangat salah kecuali jika saya menentukandtype='float64'
:Sayangnya, kecuali Anda tahu apa yang harus dicari, Anda tidak dapat selalu mengatakan bahwa hasil Anda salah. Saya tidak akan pernah menggunakan
np.average
lagi karena alasan ini tetapi akan selalu digunakannp.mean(.., dtype='float64')
pada array besar. Jika saya ingin rata-rata tertimbang, saya akan menghitungnya secara eksplisit menggunakan produk dari vektor bobot dan array target dan kemudian salah satu ,np.sum
ataunp.mean
sesuai (dengan presisi yang sesuai juga).sumber