[英]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.