Cree una array que sea el promedio de cada subarreglo consecutivo de tamaño dado usando NumPy

En este artículo, veremos el programa para crear una array de elementos en la que cada elemento es el promedio de todos los subarreglos consecutivos de tamaño k de una array numpy dada de tamaño n tal que k es un factor de n es decir (n%k ==0). Esta tarea se puede realizar usando las funciones numpy.mean() y numpy.reshape() juntas.

Sintaxis: numpy.mean(arr, eje = Ninguno)

Retorno: media aritmética de la array (un valor escalar si el eje no es ninguno) o array con valores medios a lo largo del eje especificado. 

Sintaxis: numpy_array.reshape(forma)

Retorno: Devuelve numpy.ndarray

Ejemplo :

Arr = [1,2,3,4,5,6
       7,8,9,10,11
       12,13,14,15,16] 
and K = 2 then 
Output is [ 1.5, 3.5, 5.5, 7.5, 
            9.5, 11.5, 13.5, 15.5].
            
Here, subarray of size k and there average are calculated as :

[1 2]    avg = ( 1 + 2 ) / 2 = 1.5  
[3 4]    avg = ( 3 + 4 ) / 2 = 3.5
[5 6]    avg = ( 5 + 6 ) / 2 = 5.5
[7 8]    avg = ( 7 + 8 ) / 2 = 7.5
[9 10]   avg = ( 9 + 10 ) / 2 = 9.5 
[11 12]  avg = ( 11 + 12 ) / 2 = 11.5 
[13 14]  avg = ( 13 + 14 ) / 2 = 13.5 
[15 16]  avg = ( 15 + 16 ) / 2 = 15.5

A continuación se muestra la implementación:

Python3

# importing library
import numpy
  
# create numpy array
arr = numpy.array([1, 2, 3, 4, 5,
                   6, 7, 8, 9, 10,
                   11, 12, 13, 14,
                   15, 16])
  
# view array
print("Given Array:\n", arr)
  
# declare k
k = 2
  
# find the mean 
output = numpy.mean(arr.reshape(-1, k),
                    axis=1)
  
# view output
print("Output Array:\n", output)

Producción:

Given Array:
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
Output Array:
[ 1.5  3.5  5.5  7.5  9.5 11.5 13.5 15.5]

Publicación traducida automáticamente

Artículo escrito por deepanshu_rustagi 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 *