繁体   English   中英

Numpy 数组平均每十个值

[英]Numpy array mean each ten values

我有一个包含数百万个值的 numpy 数组。 它只有一个维度。 我想返回一个新的 numpy 数组,其中包含每个十位的平均值。

有什么解决办法?

感谢您的支持!

reshape 、求和并除以 10:

N = 10
a.reshape(-1,N).sum(1)/N

或者,使用numpy.mean

np.mean(a.reshape(-1,10), 1)

注意。 您需要确保数组的长度是 N 的倍数。如果不是,则切片以截断或填充以添加缺失值

例子:

a = np.arange(10*20)
a.reshape(-1,10).sum(1)/10

output:

array([  4.5,  14.5,  24.5,  34.5,  44.5,  54.5,  64.5,  74.5,  84.5,
        94.5, 104.5, 114.5, 124.5, 134.5, 144.5, 154.5, 164.5, 174.5,
       184.5, 194.5])

假设 'a' 是包含数百万个条目的数组,那么您可以获得所需的 output,如下所示:

x = np.array([np.mean(a[i:i+10]) for i in range(0, len(a), 10)]) 

如果你的数组不是很平衡,用nan填充你的数组并使用np.nanmean来计算平均值:

a = np.arange(123)
N = 10
M = int(np.ceil(len(a) / 10) * 10 - len(a))
b = np.nanmean(np.concatenate([a, np.full(M, np.nan)]).reshape(-1, N), axis=1)

Output:

>>> b
array([  4.5,  14.5,  24.5,  34.5,  44.5,  54.5,  64.5,  74.5,  84.5,
        94.5, 104.5, 114.5, 121. ])

121 = (120 + 121 + 122 + 南 + 南 + 南 + 南 + 南 + 南 + 南) / 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM