Promediando sobre cada N elementos de un Numpy Array

En este artículo, aprenderemos cómo encontrar el promedio de cada n elemento de una array NumPy. Para realizar nuestra tarea, utilizaremos algunos métodos incorporados proporcionados por el módulo NumPy, que son los siguientes:

  • numpy.average() para calcular el promedio, es decir, la suma de todos los números dividida por el número de elementos
  • numpy.reshape() para remodelar la array tomando n elementos a la vez sin cambiar los datos originales
  • numpy.mean() para calcular el promedio, ya que la media no es más que la suma de elementos dividida por la cantidad de elementos

Ejemplo 1: promedio sobre una array 1-D

Python3

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)

Producción:

Nota: N debe ser un múltiplo entero del tamaño de la array 1d. 

Ejemplo 2: promedio sobre una array 1-D (en filas)

Aquí hemos tomado una array de dimensiones (5,3), es decir, tiene 5 filas y 3 columnas. Dado que el eje = 1, reformará los elementos en grupos de n y luego calculará el promedio por fila usando el eje = 1.

Python3

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)

Producción:

Ejemplo 3: promedio sobre una array 1-D (en columnas)

Recuerde que debemos dar el eje = 1 solo entonces puede agrupar elementos en forma de fila a partir del índice 0. Ahora, si cambiamos el valor del eje a 0, luego de remodelar en grupos de n, realizará la operación promedio en forma de columna como se indica a continuación, lo que no nos dará el resultado deseado. Es mejor si queremos calcular el promedio por columnas.

Python3

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)

Después de remodelar la array 2D, se ve a continuación:

Luego, realizando la columna promedio sabia, obtenemos la respuesta.

Producción:

Ejemplo 4: promedio sobre una array 1-D (en columnas sin remodelar)

Tenga en cuenta aquí que tomando axis=0 no podemos realizar el promedio por fila sobre cada n elemento. Simplemente calculará el promedio de cada columna por separado. El siguiente código calculará el promedio sobre cada elemento de la columna.

Python3

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)

Producción:

Publicación traducida automáticamente

Artículo escrito por rijushree100guha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *