Öğelerin koleksiyonunu bir bilgisayarın belleğine sığamayacağınız çok büyük bir dizinin olduğunu hayal edin. Python'da bu dizinin ortalama, medyan, standart sapma ve diğer özet istatistik değerlerini nasıl hesaplarsınız?Python'daki büyük dizinin özet istatistiklerini artımlı olarak hesaplayın
Hesaplama işleminin ortalama değerini aşamalı olarak açıklayan ve bir liste veya yineleyici nesnesi alan bir Python işlevi sağlayan this post'u buldum, ancak her zaman bir yineleyici nesnesine erişemediğim için onu bir sınıf olarak uygulamıştım. collections.Counter
'a benzer davranır. Ancak, std
, min
, max
, median
, skewness
, kurtosis
, vb.
Aşağıdaki kod uygulayan bir asgari çalışma örneğidir artan mean
, min
ve max
ve dinlenme uyabilecek nereye gösterir:
class Inc_sumstats(object):
def __init__(self):
self.length = 0
self.mean = 0
#self.std = 0
self.min = np.inf
self.max = 0
#self.median = 0
#self.skewness = 0
#self.kurtosis = 0
def update(self, num):
self.length += 1
self.mean = (self.mean * (self.length - 1) + num)/self.length
#self.std = ...
self.min = num if num < self.min else self.min
self.max = num if num > self.max else self.max
#self.median = ...
#self.skewness = ...
#self.kurtosis = ...
return self
Güncelleme:
ben Sitedeki similar questions'un farkındayım, ancak şimdiye kadar herhangi bir çözümü çözemedim. han demek. Arka plan araştırmamda bir şey kaçırıyorsam lütfen soruları işaretleyin veya yinelenen olarak işaretleyin.
nasıl bellekte değilse bu diziyi depolamak var? – Natecat
Diziyi artırdığınızda ortalama değişiklikler olduğundan, std'yi tekrar sıfırdan hesaplamanız gerektiğine inanıyorum. – lordingtar
@Natecat Bu dizi potansiyel olarak büyük boyutlu e-posta karakter uzunlukları veya başka türde gerçek zamanlı veri akışı olabilir. Ya da sadece büyük bir sabit diskte saklanabilir. –