2016-04-14 15 views
-1

Tamam Bu yüzden burada birkaç farklı soruyu inceledim, ancak bu sorunu çözmeye yardımcı olacak hiçbir şey bulamadım. Sağlıklı hastalar ve hasta hastalar arasında 303 satırı 13 sıraya böldüm. Her ikisinin de ortalamalarını elde edebildim ama şimdi 2 ortalamanın medyanını almam gerekiyor (çıktıları netleştirmek için çıktıların nasıl görünmesi gerektiği).CSV'de 13 satırda Medyan'ı bulma

Averages of Healthy Patients: 
[52.59, 0.56, 2.79, 129.25, 242.64, 0.14, 0.84, 158.38, 0.14, 0.59, 1.41, 0.27, 3.77, 0.00] 
Averages of Ill Patients: 
[56.63, 0.82, 3.59, 134.57, 251.47, 0.16, 1.17, 139.26, 0.55, 1.57, 1.83, 1.13, 5.80, 2.04] 
Seperation Values are: 
[54.61, 0.69, 3.19, 131.91, 247.06, 0.15, 1.00, 148.82, 0.34, 1.08, 1.62, 0.70, 4.79, 1.02] 

ben medyan almaya çalışırken için farklı yöntemler denedi ama ben resmen bunu elde etmek için nasıl fikirleri tükendi tüm girişimleri başarısız olduğunu. Yani eğer belki doğru yolda olduğumu görüp görebiliyorsan, küçük bir şeyi özledim ya da tamamen yoldan çıkmış olsam, bu problemle ilgili herhangi bir kavrayışı takdir ediyorum.

ill_avg = [ill/len(iList) for ill in iList_sum] 
hlt_avg = [ hlt/len(hList) for hlt in hList_sum] 
median = [(b/len(bList) for b in bList_sum) //2 ] 


print('Total of lines Processed: ' + str(numline)) 
print("Total Healthy Count: " + str(HPcounter)) 
print("Total Ill Count: " + str(IPcounter)) 
print("Averages of Healthy Patients:") 
print(str(hlt_avg)) 
print("Averages of Ill Patients ") 
print('[' + ', '.join(['{:.2f}'.format(number) for number in ill_avg]) + ']') 
print("Seperation Values are:") 
print(median) 

hem ortalamalar ekleyerek ortancasını almaya çalıştı ama o iş için alamadım ve benim son deneyin (tüm hastalar ise Blist) solo ortalama yapar oldu ve o ortanca ile olsun. Eğer ilk yolu bList olmadan çalıştırabilirsem, kodu daha az gereksiz ve umarım daha küçük yapacağı için tercih ederim. Özür dilerim, bu 2 sınıftan henüz geçmediğimiz için numpy veya panda kullanacağımı düşünmüyorum.

cevap

1

Kullanım numpy:

import numpy 

a = numpy.array([[52.59, 0.56, 2.79, 129.25, 242.64, 0.14, 0.84, 158.38, 0.14, 0.59, 1.41, 0.27, 3.77, 0.00], 
       [56.63, 0.82, 3.59, 134.57, 251.47, 0.16, 1.17, 139.26, 0.55, 1.57, 1.83, 1.13, 5.80, 2.04]]) 

print numpy.mean(a, axis=0) 

veya numpy kaçınmak varsa saf Python kullanın: Ben biz beri numpy veya panda kullanmak varsayalım değilim söylemeyi unutmuşum özür dileriz

from __future__ import division 

def mean(a): 
    return sum(a)/len(a) 

a = [[52.59, 0.56, 2.79, 129.25, 242.64, 0.14, 0.84, 158.38, 0.14, 0.59, 1.41, 0.27, 3.77, 0.00], 
     [56.63, 0.82, 3.59, 134.57, 251.47, 0.16, 1.17, 139.26, 0.55, 1.57, 1.83, 1.13, 5.80, 2.04]] 

print map(mean, zip(*a)) 
+0

Henüz sınıfta 2'yi geçti. – David

+0

benim düzeltilmiş cevabımı gör :) – Anton

+0

Tamam kabul edilebilir bu yüzden a = her iki listeye katılarak bunları eklemeliyim ve medyanı alabilmem mümkün mü? – David