2017-08-04 1 views
0

Ich habe viele Datensätze, alle mit der Form (586, 1383), die den Längen- und Breitengrad darstellen. Die Datensätze sind für Bodenfeuchtigkeitsdaten; zum Beispiel, print(dataset1[2, 435]) wird mir einen Wert von 0.354 geben.Erstellen eines numpy Arrays für mehrere Datensätze

Derzeit habe ich 31 dieser Datensätze. Ich möchte ein numpy Array mit einer Form von (31, 586, 1383) erstellen, um alle diese Datensätze zu halten. Ich kann zur Zeit alle Datensätze öffnen ich wie so zu einem Array hinzufügen möchten:

directory = r"C:\Users\matth\Downloads\AMSRE" 
for root, dirs, filenames in os.walk(directory): 
    for f in filenames: 
     if f.startswith("AMSR_E_L3_DailyLand_V06_201001"): 
     log = open(os.path.join(root, f), 'r') 
     file_name = (("C:\\Users\\matth\\Downloads\\AMSRE\\") + f) 
     hdf = SD(file_name, SDC.READ) 
     g = gdal.Open(('HDF4_EOS:EOS_GRID:') + file_name + (':Ascending_Land_Grid:A_Soil_Moisture')) 
     sm = g.ReadAsArray() 

     lons = np.fromstring (urllib2.urlopen("ftp://sidads.colorado.edu/pub/tools/easegrid/lowres_latlon/MLLONLSB").read(), \ 
     dtype=np.int32)/100000. 
     lats = np.fromstring (urllib2.urlopen("ftp://sidads.colorado.edu/pub/tools/easegrid/lowres_latlon/MLLATLSB").read(), \ 
     dtype=np.int32)/100000. 

     lons = lons.reshape(sm.shape) 
     lats = lats.reshape(sm.shape) 
     smm = np.ma.array (sm, mask=np.logical_or (sm==-9999, sm==9999)) 

Am Ende print(smm.shape) gibt mir (586, 1383). Der obige Code bestand nur darin, die Daten in Breiten- und Längengraden zu erfassen. Ich dachte daran, vielleicht eine for Schleife zu verwenden, um die Dateien nacheinander in ein leeres Array hinzuzufügen ... nicht sicher, wie das funktionieren wird. Weiß jemand, wie ich mit diesem Code arbeiten oder ihn ändern kann, damit ich die Datensätze in ein Array mit der Form (31, 586, 1383) einfügen kann?

+0

Warum nicht einfach 'pd.DataFrame (smm)'? –

+0

@ cᴏʟᴅsᴘᴇᴇᴅ die Größe des Datenrahmens war noch '(586, 1383)' –

+0

Ah .. habe das Bit nicht gesehen. Nicht sicher, wie gut Pandas 3D-Datenrahmen unterstützt. –

Antwort

0

Wie von pandas documentation erwähnt, ist DataFrame eine 2D-Struktur.

DataFrame ist eine 2-dimensional beschriftete Datenstruktur mit Spalten verschiedener Typen. Sie können es sich wie eine Tabelle oder SQL-Tabelle oder ein Diktat von Series-Objekten vorstellen.

Aber Sie können eine Liste von Datenrahmen oder alle Ihre Daten in demselben Datenrahmen mit einer zusätzlichen Spalte haben, die den Ursprung angibt.

Verwandte Themen