通过使用NumPy对相邻值求平均值来减小数组大小

2022-04-17 00:00:00 python numpy arrays mean

问题描述

我在NumPy中有数千个数字的大数组。我想通过取相邻值的平均值来减小它的大小。 例如:

a = [2,3,4,8,9,10]
#average down to 2 values here
a = [3,9]
#it averaged 2,3,4 and 8,9,10 together

基本上,我在数组中有n个元素,我想告诉它向下取X个值的平均值,它的平均值如下所示。

有什么方法可以用NumPy做到这一点(它已经被用于其他用途,所以我想继续使用它)。


解决方案

使用reshapemean,可以对大小为N*m的一维数组的每m个邻接值进行平均,N是任意正整数。例如:

import numpy as np

m = 3
a = np.array([2, 3, 4, 8, 9, 10])
b = a.reshape(-1, m).mean(axis=1)
#array([3., 9.])

1)a.reshape(-1, m)将在不复制数据的情况下创建数组的2D图像:

array([[ 2,  3,  4],
       [ 8,  9, 10]])

2)取第二个轴的平均值(axis=1),然后计算每一行的平均值,结果是array([3., 9.])

相关文章