对Numpy数组的每N个元素进行平均计算
在这篇文章中,我们将学习如何找到NumPy数组中每个n个元素的平均数。为了完成我们的任务,我们将使用NumPy模块提供的一些内置方法,具体如下。
- numpy.average() 计算平均数,即所有数字的总和除以元素的数量
- numpy.reshape()在不改变原始数据的情况下,一次对数组中的n个元素进行重塑。
- numpy.mean()来计算平均数,因为平均数只不过是元素的总和除以元素的数量而已。
例子1:
import numpy as np
# converting list to numpy array
givenArray = np.array([6, 5, 4, 3, 2, 1, 9,
8, 7, 12, 11, 10, 15,
14, 13])
# here we took 3 as our input
n = 3
# calculates the average
avgResult = np.average(givenArray.reshape(-1, n), axis=1)
print("Given array:")
print(givenArray)
print("Averaging over every ", n, " elements of a numpy array:")
print(avgResult)
输出:
注意: N应该是1d数组大小的整数倍。
例子2:
这里我们采取了一个尺寸为(5,3)的数组,即它有5行和3列。由于轴=1,它将把元素重塑为n组,然后用轴=1来计算平均行数。
import numpy as np
# converting list to numpy array
givenArray = np.array([[60, 50, 40], [30, 20, 10], [90, 80,70],
[120, 110, 100], [150, 140, 130]])
# here we took 5 as our input
n = 5
# calculates the average
avgResult = np.average(givenArray.reshape(-1, n), axis=1)
print("Given array:")
print(givenArray, "\n")
print("Dimensions of given array:", givenArray.shape, "\n")
print("Averaging over every ", n, " elements of a numpy array:")
print(avgResult)
输出:
例子3:
请记住,我们需要给轴=1,然后它可以从第0个索引开始按行分组。现在,如果我们将轴的值改为0,那么在以n为一组进行重塑之后,它将按下面给出的方式进行逐列平均的操作,这将不会给我们带来期望的结果。如果我们想计算平均数,最好是按列计算。
import numpy as np
# converting list to numpy array
givenArray = np.array([[60, 50, 40], [30, 20, 10], [90, 80, 70],
[120, 110, 100], [150, 140, 130]])
# here we will calculate average
# over every 5 elements
n = 5
# calculates the average
avgResult = np.average(givenArray.reshape(-1, n), axis=0)
print("Given array:")
print(givenArray, "\n")
print("Dimensions of given array:", givenArray.shape, "\n")
print("Averaging over every ", n, " elements of a numpy array:")
print(avgResult)
在重塑二维阵列后,它看起来像下面这样。
然后按列进行平均,我们就可以得到答案。
输出:
例子4:
请注意,在axis=0的情况下,我们不能对每一个n个元素进行逐行的平均。它只是分别计算每一列的平均值。下面的代码将计算出每一列元素的平均数。
import numpy as np
# converting list to numpy array
givenArray = np.array([[60, 50, 40], [30, 20, 10], [90, 80,70],
[120, 110, 100], [150, 140, 130]])
# here we will calculate average over
# every 5 elements
n = 5
# calculates the average
avgResult1 = givenArray.mean(axis=0)
print("Given array:")
print(givenArray, "\n")
print("Dimensions of given array:", givenArray.shape, "\n")
print("Averaging over every ", n, " elements of a numpy array:")
print(avgResult1)
输出: