首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任意维数numpy阵列的次采样

任意维数numpy阵列的次采样
EN

Stack Overflow用户
提问于 2016-04-18 11:06:14
回答 1查看 566关注 0票数 3

我有一个n-dimensional numpy数组(n在原则上是未知的,尽管实际上它是一个很小的数字,通常是n<=3)。我想在每个方向上对每个-m第四项进行子抽样.对于2d数组,这将是

代码语言:javascript
复制
arr[::m, ::m]

有没有办法将其推广到任意的n?(在实践中,我只需检查上述值并使用不同的版本,但我怀疑还有更优雅的方法)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-18 11:21:52

使用切片:

代码语言:javascript
复制
In [1]: import numpy as np

In [2]: a = np.array(range(3*5*5)).reshape(3, 5, 5)

In [3]: a
Out[3]: 
array([[[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14],
        [15, 16, 17, 18, 19],
        [20, 21, 22, 23, 24]],

       [[25, 26, 27, 28, 29],
        [30, 31, 32, 33, 34],
        [35, 36, 37, 38, 39],
        [40, 41, 42, 43, 44],
        [45, 46, 47, 48, 49]],

       [[50, 51, 52, 53, 54],
        [55, 56, 57, 58, 59],
        [60, 61, 62, 63, 64],
        [65, 66, 67, 68, 69],
        [70, 71, 72, 73, 74]]])

In [4]: a[::2, ::2, ::2]
Out[4]: 
array([[[ 0,  2,  4],
        [10, 12, 14],
        [20, 22, 24]],

       [[50, 52, 54],
        [60, 62, 64],
        [70, 72, 74]]])

In [5]: a[[slice(None, None, 2)] * a.ndim]
Out[5]: 
array([[[ 0,  2,  4],
        [10, 12, 14],
        [20, 22, 24]],

       [[50, 52, 54],
        [60, 62, 64],
        [70, 72, 74]]])
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36692213

复制
相关文章

相似问题

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