对Numpy数组的每N个元素进行平均计算

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

输出:

对Numpy数组的每N个元素进行平均计算

注意: 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)

输出:

对Numpy数组的每N个元素进行平均计算

例子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)

在重塑二维阵列后,它看起来像下面这样。

对Numpy数组的每N个元素进行平均计算

然后按列进行平均,我们就可以得到答案。

输出:

对Numpy数组的每N个元素进行平均计算

例子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)

输出:

对Numpy数组的每N个元素进行平均计算

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程