我来自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')发布于 2018-10-02 20:34:15
在这种特殊情况下,您可能可以使用scipy.ndimage.convolve1d
from scipy.ndimage import convolve1d
T_bar_run = convolve1d(KMCM_T, np.ones(N)/N, axis=0, mode='constant')"numpy方式“是避免循环,因为在数值应用程序中,解释循环的开销往往使其有效负载的成本相形见绌。这是通过依赖向量化函数来完成的,即将特定操作应用于数组参数的每个单元格的函数。
许多这样的函数沿着一个或几个维度自然地工作,这就是为什么您经常会遇到axis关键字参数的原因。
https://stackoverflow.com/questions/52615815
复制相似问题