如何操作数组的一维?

2024-06-28 20:06:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我来自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')

Tags: runinfornp方式bar数组idl
1条回答
网友
1楼 · 发布于 2024-06-28 20:06:33

在这种特定情况下,您可以使用scipy.ndimage.convolve1d

from scipy.ndimage import convolve1d

T_bar_run = convolve1d(KMCM_T, np.ones(N)/N, axis=0, mode='constant')

“最简单的做事方式”是避免循环,因为在数值应用中,通常解释循环的开销会使其有效负载的成本相形见绌。这是通过依赖矢量化函数来实现的,即对其数组参数的每个单元格应用特定操作的函数。你知道吗

许多这样的函数自然地沿着一个或几个维度运行,这就是为什么您会经常遇到axis关键字参数的原因。你知道吗

相关问题 更多 >