Menemukan rata-rata dari sebuah daftar
Saya harus mencari rata-rata dari sebuah daftar dalam Python. Ini adalah kode saya sejauh ini
l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print reduce(lambda x, y: x + y, l)
Saya sudah mendapatkannya sehingga ia menambahkan nilai-nilai dalam daftar, tetapi saya tidak tahu bagaimana cara membaginya?
420
20
Pada Python 3.4+ Anda dapat menggunakan
statistics.mean()
Pada versi Python yang lebih lama Anda dapat melakukan
Pada Python 2 Anda perlu mengkonversi
len
ke float untuk mendapatkan pembagian floatTidak perlu menggunakan
reduce
. Ini jauh lebih lambat dan dihapus di Python 3.Anda dapat menggunakan
numpy.berarti
:A statistik modul telah ditambahkan ke python 3.4. Ini memiliki fungsi untuk menghitung rata-rata yang disebut berarti. Contoh dengan daftar yang anda berikan akan sama:
Mengapa Anda menggunakan fungsi
reduce()
untuk ini ketika Python memiliki fungsisum()
yang sangat bagus?(Fungsi
float()
diperlukan untuk memaksa Python melakukan pembagian floating-point).Ada statistik perpustakaan jika anda menggunakan python >= 3.4
https://docs.python.org/3/library/statistics.html
Anda dapat menggunakan it's berarti metode seperti ini. Let's mengatakan anda memiliki daftar nomor yang ingin anda cari artinya:-
Ini memiliki metode lain juga seperti stdev, varians, mode, harmonic mean, median, dll yang terlalu berguna.
Bukannya casting untuk mengapung, anda dapat menambahkan 0,0-jumlah:
sum(l) / float(len(l))
adalah jawaban yang tepat, tapi hanya untuk kelengkapan anda dapat menghitung rata-rata dengan satu mengurangi:Perhatikan bahwa hal ini dapat mengakibatkan sedikit kesalahan pembulatan:
Saya mencoba menggunakan opsi di atas, tetapi didn't bekerja. Coba ini:
dari statistik impor berarti
bekerja pada python 3.5
Atau menggunakan
panda
'sSeri.berarti
metode:Demo:
Dari docs:
Dan berikut merupakan dokumentasi untuk ini:
Dan seluruh dokumentasi:
Jika anda ingin mendapatkan lebih dari sekedar berarti (alias rata-rata) anda mungkin memeriksa scipy stats
Saya punya pertanyaan serupa untuk memecahkan di Udacity´s masalah. Bukan fungsi built-in saya kode:
Jauh lebih lama dari biasanya tapi untuk pemula yang cukup menantang.
sebagai pemula, saya hanya kode ini:
Keduanya dapat memberikan anda dekat dengan nilai-nilai yang sama pada bilangan bulat atau setidaknya 10 nilai desimal. Tapi jika anda benar-benar mempertimbangkan lama mengambang nilai-nilai keduanya dapat berbeda. Pendekatan dapat bervariasi tergantung pada apa yang ingin anda capai.
Mengambang nilai-nilai
@Andrew Clark adalah benar pada pernyataan-nya.
Dalam rangka untuk menggunakan
mengurangi
untuk mengambil rata-rata berjalan, anda'll perlu untuk melacak total tetapi juga jumlah elemen yang terlihat sejauh ini. sejak itu's tidak sepele elemen dalam daftar, anda'll juga harus melewatimengurangi
tambahan argumen untuk melipat ke dalam.misalkan
x = [[-5.01,-5.43,1.08,0.86,-2.67,4.94,-2.51,-2.25,5.56,1.03], [-8.12,-3.48,-5.52,-3.78,0.63,3.29,2.09,-2.13,2.86,-3.33], [-3.68,-3.54,1.66,-4.11,7.39,2.08,-2.59,-6.94,-2.26,4.33]]
anda dapat melihat bahwa
x
memiliki dimensi 3*10 jika anda perlu untuk mendapatkanberarti
untuk setiap baris yang anda dapat mengetik inidon't lupa untuk
mengimpor numpy sebagai np
Menemukan rata-rata di daftar Dengan menggunakan berikut PYTHON kode:
mencoba ini itu mudah.
Menggabungkan beberapa jawaban diatas, saya've datang dengan berikut yang bekerja dengan mengurangi dan doesn't mengasumsikan anda memiliki
L
yang tersedia dalam mengurangi fungsi:atau seperti yang diposting sebelumnya
1.0 adalah untuk memastikan anda mendapatkan floating point division