Python 在循环中组合numpy数组
我使用Python 在循环中组合numpy数组,python,arrays,loops,numpy,append,Python,Arrays,Loops,Numpy,Append,我使用for循环在一个目录中打开12个文件,每个文件代表一年中的一个月,形状如下所示: (31, 180, 140) (28, 180, 140) (31, 180, 140) (30, 180, 140) (31, 180, 140) (30, 180, 140) (31, 180, 140) (31, 180, 140) (30, 180, 140) (31, 180, 140) (30, 180, 140) (31, 180, 140) 我试图使用append将这些文件合并到一个列表中,
for
循环在一个目录中打开12个文件,每个文件代表一年中的一个月,形状如下所示:
(31, 180, 140)
(28, 180, 140)
(31, 180, 140)
(30, 180, 140)
(31, 180, 140)
(30, 180, 140)
(31, 180, 140)
(31, 180, 140)
(30, 180, 140)
(31, 180, 140)
(30, 180, 140)
(31, 180, 140)
我试图使用append
将这些文件合并到一个列表中,如图所示:
directory = r"C:\Users\matth\Downloads\TRMM_3B42RT"
for root, dirs, filenames in os.walk(directory):
precip_subsetland2010 = []
for f in filenames:
if f.startswith("3B42RT_Daily.2010"):
log = open(os.path.join(root, f), 'r')
datapath2 = (("C:\\Users\\matth\\Downloads\\TRMM_3B42RT\\") + f)
f = Dataset(datapath2)
latbounds = [ -45 , -10 ]
lonbounds = [ 105, 150 ]
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]
# latitude lower and upper index
latli = np.argmin( np.abs( lats - latbounds[0] ) )
latui = np.argmin( np.abs( lats - latbounds[1] ) )
# longitude lower and upper index
lonli = np.argmin( np.abs( lons - lonbounds[0] ) )
lonui = np.argmin( np.abs( lons - lonbounds[1] ) )
precip_subset = f.variables['precipitation'][ : , lonli:lonui , latli:latui ]
precip_subsetland2010.append(precip_subset)
precipsubsetland2010 = np.asarray(precip_subsetland2010)
print(precipsubsetland2010.shape)
但是,我得到一个输出,如图所示:
directory = r"C:\Users\matth\Downloads\TRMM_3B42RT"
for root, dirs, filenames in os.walk(directory):
precip_subsetland2010 = []
for f in filenames:
if f.startswith("3B42RT_Daily.2010"):
log = open(os.path.join(root, f), 'r')
datapath2 = (("C:\\Users\\matth\\Downloads\\TRMM_3B42RT\\") + f)
f = Dataset(datapath2)
latbounds = [ -45 , -10 ]
lonbounds = [ 105, 150 ]
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]
# latitude lower and upper index
latli = np.argmin( np.abs( lats - latbounds[0] ) )
latui = np.argmin( np.abs( lats - latbounds[1] ) )
# longitude lower and upper index
lonli = np.argmin( np.abs( lons - lonbounds[0] ) )
lonui = np.argmin( np.abs( lons - lonbounds[1] ) )
precip_subset = f.variables['precipitation'][ : , lonli:lonui , latli:latui ]
precip_subsetland2010.append(precip_subset)
precipsubsetland2010 = np.asarray(precip_subsetland2010)
print(precipsubsetland2010.shape)
输出:
(1, 31, 180, 140)
(2,)
(3,)
(4,)
(5,)
(6,)
(7,)
(8,)
(9,)
(10,)
(11,)
(12,)
我最终希望将数据添加到一个列表中,然后转换成一个具有
(365、180、140)
形状的数组。我怎样才能做到这一点?这是append
的正确应用吗?在循环中,只需将precip\u subset
附加到列表中即可:
precip_subsetland2010.append(precip_subset)
在循环外部,调用,以垂直堆叠数据
output = np.vstack(precip_subsetland2010)
打印
output.shape
应该提供类似(X,180,140)
(X
是组成数组的所有行的总和) 你们需要更多的信息来回答这个问题吗?precip\u subset
有你们提到的形状吗?打印出它的形状。@cᴏʟᴅsᴘᴇᴇᴅ: 我在开头打印的形状列表是12个文件的precip_subset
的形状。