Finden Sie eine Durchschnittliche, aber ignorieren jede null in einer Liste [Python]

Ich habe eine text-Datei mit Temperaturdaten, die wie folgt aussieht:

3438012868.0    0.0 21.7    22.6    22.5    22.5    21.2
3438012875.0    0.0 21.6    22.6    22.5    22.5    21.2
3438012881.9    0.0 21.7    22.5    22.5    22.5    21.2
3438012888.9    0.0 21.6    22.6    22.5    22.5    21.2
3438012895.8    0.0 21.6    22.5    22.6    22.5    21.3
3438012902.8    0.0 21.6    22.5    22.5    22.5    21.2
3438012909.7    0.0 21.6    22.5    22.5    22.5    21.2
3438012916.6    0.0 21.6    22.5    22.5    22.5    21.2
3438012923.6    0.0 21.6    22.6    22.5    22.5    21.2
3438012930.5    0.0 21.6    22.5    22.5    22.5    21.2
3438012937.5    0.0 21.7    22.5    22.5    22.5    21.2
3438012944.5    0.0 21.6    22.5    22.5    22.5    21.3
3438012951.4    0.0 21.6    22.5    22.5    22.5    21.2
3438012958.4    0.0 21.6    22.5    22.5    22.5    21.3
3438012965.3    0.0 21.6    22.6    22.5    22.5    21.2
3438012972.3    0.0 21.6    22.5    22.5    22.5    21.3
3438012979.2    0.0 21.6    22.6    22.5    22.5    21.2
3438012986.1    0.0 21.6    22.5    22.5    22.5    21.3
3438012993.1    0.0 21.6    22.5    22.6    22.5    21.2
3438013000.0    0.0 21.6    0.0     22.5    22.5    21.3
3438013006.9    0.0 21.6    22.6    22.5    22.5    21.2
3438013014.4    0.0 21.6    22.5    22.5    22.5    21.3
3438013021.9    0.0 21.6    22.5    22.5    22.5    21.3
3438013029.9    0.0 21.6    22.5    22.5    22.5    21.2
3438013036.9    0.0 21.6    22.6    22.5    22.5    21.2
3438013044.6    0.0 21.6    22.5    22.5    22.5    21.2

aber die gesamte Datei ist viel länger, dies ist die ersten paar Zeilen. Die erste Spalte einen timestamp und die nächsten 6 Spalten Temperatur-Aufzeichnungen. Schreiben brauche ich eine Schleife, die finden den Mittelwert der 6 Messungen, aber ignorieren Messung von 0,0, da dies nur bedeutet, dass der sensor war nicht aktiviert. Später in den Messungen, die erste Spalte ist eine Messung. Gibt es eine Möglichkeit für mich, schreiben Sie eine if-Anweisung oder einen anderen Weg zu finden, nur Mittelwerte der nicht-null-zahlen in einer Liste? Jetzt habe ich:

time = []
t1 = []
t2 = []
t3 = []
t4 = []
t5 = []
t6 = []
newdate = []

temps = open('file_path','r')
sepfile = temps.read().replace('\n','').split('\r')
temps.close()

for plotpair in sepfile:
    data = plotpair.split('\t')
    time.append(float(data[0]))
    t1.append(float(data[1]))
    t2.append(float(data[2]))
    t3.append(float(data[3]))
    t4.append(float(data[4]))
    t5.append(float(data[5]))
    t6.append(float(data[6]))

for data_seconds in time:
    date = datetime(1904,1,1,5,26,02)
    delta = timedelta(seconds=data_seconds)
    newdate.append(date+delta)

for datapoint in t2,t3,t4,t5,t6:
    temperatures = np.array([t2,t3,t4,t5,t6]).mean(0).tolist()

die findet nur im Durchschnitt der letzten 5 Messungen. Ich bin der Hoffnung zu finden, eine bessere Methode, die ignoriert 0.0 s und die erste Spalte, wenn es eine nicht-0.

  • Sie können verwenden Sie integrierte plugins oder 3rd party Module?
  • Sind Sie mit python2 oder Python ist3?
  • warum ignorieren müssen, null, null hinzufügen, um eine beliebige Anzahl lass es gleich bleiben
  • die Durchschnittliche 1,2,3 2; während der Durchschnitt der 1,2,3,0 ist 1,5. Das Problem sehen?
  • ohhh OP einschließen möchten, die Gesamtzahl in es
Schreibe einen Kommentar