【发布时间】:2018-01-14 07:16:30
【问题描述】:
我正在尝试使用以下代码将目录中 31 个文件中的 append 数据放入 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))
soil_moisture = []
soil_moisture.append(smm)
soil_moisture2006 = np.asarray(soil_moisture)
output = np.vstack(soil_moisture2006)
所有文件都以AMSR_E_L3_DailyLand_V06_201001开头,这就是我有这行的原因
if f.startswith("AMSR_E_L3_DailyLand_V06_201001"):
一个文件的形状为(586, 1383)。我想要一个形状为(31, 586, 1383) 的numpy 数组,因为目录中有31 个文件。但是,当我在代码中创建的output 数组的shape print 时,它的形状是(586, 1383),我不知道为什么。有谁知道我如何使用append 创建一个形状为(31, 586, 1383) 的numpy 数组?提前致谢。
【问题讨论】:
-
初始化
soil_moisture外循环。并在循环后将其转换为数组。你不应该需要vstack。您是否练习过使用小型交互式案例进行此操作?从小处着手。
标签: python arrays numpy append