首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对数组的一个维度进行操作?

如何对数组的一个维度进行操作?
EN

Stack Overflow用户
提问于 2018-10-02 20:18:35
回答 1查看 81关注 0票数 0

我来自IDL,所以我最习惯使用带有显式指示的for循环。我读过python是如何做不同的事情的,您应该可以这样说。

代码语言:javascript
复制
for thing in things:

我不知道的是,如果我有一个4维数组,并且我想在数组的一维中执行一个操作,我如何将结果保存在一个4维数组中,并以'python‘的方式进行操作。

我有一个时间,高度,纬度,经度的四维数组。我想使用N=9的运行平均值窗口来平滑它。

下面是我正在使用的代码:

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-02 20:34:15

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

代码语言:javascript
复制
from scipy.ndimage import convolve1d

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

"numpy方式“是避免循环,因为在数值应用程序中,解释循环的开销往往使其有效负载的成本相形见绌。这是通过依赖向量化函数来完成的,即将特定操作应用于数组参数的每个单元格的函数。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52615815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档