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?
Warum nicht einfach 'pd.DataFrame (smm)'? –
@ cᴏʟᴅsᴘᴇᴇᴅ die Größe des Datenrahmens war noch '(586, 1383)' –
Ah .. habe das Bit nicht gesehen. Nicht sicher, wie gut Pandas 3D-Datenrahmen unterstützt. –