gpt4 book ai didi

python - 以任意维数对 numpy 数组进行二次采样

转载 作者:行者123 更新时间:2023-11-28 22:37:15 24 4
gpt4 key购买 nike

我有一个 n维 numpy 数组( n 原则上未知,尽管实际上它是一个很小的数字,通常是 n<=3 )。我想对每个子样本进行二次采样- m每个方向的第 th 个条目。所以对于二维数组,这将是

arr[::m, ::m]

有什么方法可以将其概括为任意 n ? (实际上,我可以只检查值并使用上面的不同版本,但我怀疑有更优雅的方法)。

最佳答案

使用切片:

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]]])

关于python - 以任意维数对 numpy 数组进行二次采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36692213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com