Dies ist mein erstes Mal mit netCDF und ich versuche, meinen Kopf um mich damit zu arbeiten.Schleife durch Netcdf-Dateien und führen Sie Berechnungen - Python oder R
Ich habe mehrere Netcdf-Dateien der Version 3 (NOAA NARR air.2m tägliche Mittelwerte für ein ganzes Jahr). Jede Datei erstreckt sich über ein Jahr zwischen 1979 - 2012. Sie sind 349 x 277 Gitter mit einer Auflösung von etwa 32 km. Daten wurden von here heruntergeladen.
Die Dimension ist Zeit (Stunden seit 1/1/1800) und meine Variable von Interesse ist Luft. Ich muss akkumulierte Tage mit einer Temperatur
Day 1 = +4 degrees, accumulated days = 0
Day 2 = -1 degrees, accumulated days = 1
Day 3 = -2 degrees, accumulated days = 2
Day 4 = -4 degrees, accumulated days = 3
Day 5 = +2 degrees, accumulated days = 0
Day 6 = -3 degrees, accumulated days = 1
ich diese Daten in einer neuen netcdf Datei speichern müssen < 0. Für
Beispiel berechnen. Ich bin vertraut mit Python und etwas mit R. Was ist der beste Weg, um jeden Tag durchlaufen, überprüfen Sie die vorherigen Tage Wert, und darauf basierend, geben Sie einen Wert in eine neue netcdf-Datei mit genau der gleichen Dimension und Variable ... Oder fügen Sie einfach eine weitere Variable zur ursprünglichen netcdf-Datei mit der Ausgabe hinzu, die ich suche.Ist es am besten, alle Dateien zu trennen oder zu kombinieren? Ich habe sie mit ncrcat kombiniert und es hat gut funktioniert, aber die Datei ist 2,3 GB.
Danke für die Eingabe.
Mein aktueller Fortschritt in Python:
import numpy
import netCDF4
#Change my working DIR
f = netCDF4.Dataset('air7912.nc', 'r')
for a in f.variables:
print(a)
#output =
lat
long
x
y
Lambert_Conformal
time
time_bnds
air
f.variables['air'][1, 1, 1]
#Output
298.37473
mir zu helfen, diese besser zu verstehen, welche Art von Datenstruktur bin ich mit zu arbeiten? Ist [Luft] der Schlüssel im obigen Beispiel und [1,1,1] sind auch Schlüssel? um den Wert von 298.37473 zu erhalten. Wie kann ich dann [1,1,1] durchlaufen?
Ich weiß, das ist ziemlich spät für diesen Thread von 2013, aber ich wollte nur darauf hinweisen, dass die akzeptierte Lösung nicht die Lösung für die gestellte Frage bietet. Die Frage scheint die Dauer jeder kontinuierlichen Periode von Temperaturen unter Null zu sein (beachte die Frage, ob der Zähler zurückgesetzt wird, wenn die Temperatur Null überschreitet), während diese Lösung nur die Gesamtzahl von Tagen in einem Jahr angibt, in denen die Temperatur unter Null liegt. Dies ist kein subtiler Unterschied. Wenn nur die Gesamtzahl der Tage benötigt wird, sollte die Frage bearbeitet werden, um dies zu sagen. –