Open In App

Create an array which is the average of every consecutive subarray of given size using NumPy

Last Updated : 02 Sep, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will see the program for creating an array of elements in which every element is the average of every consecutive subarrays of size k of a given numpy array of size n such that k is a factor of n i.e. (n%k==0). This task can be done by using numpy.mean() and numpy.reshape() functions together.

Syntax: numpy.mean(arr, axis = None)

Return: Arithmetic mean of the array (a scalar value if axis is none) or array with mean values along specified axis. 

Syntax: numpy_array.reshape(shape)

Return: It returns numpy.ndarray

Example :

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

Below is the implementation:

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)


Output:

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]

Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads