我来自IDL,所以我最习惯于使用显式指示的for循环。我读过关于python如何以不同的方式处理事情的文章,您应该能够这样说
for thing in things:
我搞不懂的是,如果我有一个4维数组,我想在数组的一个维度上执行一个操作,我该如何将结果保存在一个4维数组中,并以python的方式执行它。你知道吗
我有一个时间,高度,纬度,经度的四维数组。我想用N=9的运行平均窗口来平滑它。你知道吗
以下是我正在使用的代码:
KMCM_T = g.variables['temperature'][:,:,:,:] #K
N = 9
T_bar_run = []
for idx, lon in enumerate(KMCM_lon):
for idy, lat in enumerate(KMCM_lat):
for idz, lev in enumerate(KMCM_levels):
T_bar_run[:][idz][idy][idx] = np.convolve(KMCM_T[:,idz,idy,idx], np.ones((N,))/N, mode='same')
在这种特定情况下,您可以使用
scipy.ndimage.convolve1d
:“最简单的做事方式”是避免循环,因为在数值应用中,通常解释循环的开销会使其有效负载的成本相形见绌。这是通过依赖矢量化函数来实现的,即对其数组参数的每个单元格应用特定操作的函数。你知道吗
许多这样的函数自然地沿着一个或几个维度运行,这就是为什么您会经常遇到
axis
关键字参数的原因。你知道吗相关问题 更多 >
编程相关推荐