2017-08-04 77 views
0

我有許多數據集,所有數據集的形狀分別爲(586, 1383),分別代表經度和緯度。數據集用於土壤溼度數據;例如,print(dataset1[2, 435])會給我一個值0.354爲多個數據集創建一個numpy數組

目前,我有31個這些數據集。我想創建一個形狀爲(31, 586, 1383)的numpy數組來保存所有這些數據集。目前,我可以打開所有我想添加到一個數組,像這樣的數據集:

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)) 

最後,print(smm.shape)給我(586, 1383)。上面的代碼只是根據經度和緯度獲取數據。我正在考慮可能使用for循環將文件連續添加到一個空數組中...不知道這將如何工作。有誰知道我可以如何處理這個代碼,或者改變它,所以我可以將數據集添加到形狀爲(31, 586, 1383)的數組中?

+0

爲什麼不只是'pd.DataFrame(smm)'? –

+0

@cᴏʟᴅsᴘᴇᴇᴅ數據幀的大小仍然是'(586,1383)' –

+0

啊..沒有看到這一點。不確定熊貓如何支持3D數據幀。 –

回答

0

正如pandas documentation所述,DataFrame是2D結構。

DataFrame是一個帶有可能不同類型列的二維標籤數據結構。您可以將它想象爲電子表格或SQL表格或Series對象的字典。

但是,您可以在同一個數據框中包含一個數據框或所有數據的列表,並在其中添加一個指示原點的列。

相關問題