Home > Blockchain >  Defining a function to calculate mean-differences at specific array size
Defining a function to calculate mean-differences at specific array size

Time:10-24

I have an array:

arr = np.array([1,2,3,4,5,6,7,8]

I want to define a function to calculate the difference of means of the elements of this array but at a given length.

For example:

diff_avg(arr, size=2)

Expected Result:

[-2, -2]

because:

((1 2)/2) - ((3 4)/2)) = -2 -> first 4 elements because size is 2, so 2 groups of 2 elements
((5 6)/2) - ((7 8)/2)) = -2 -> last 4 elements

if size=3

then:

output: [-3]

because:

((1 2 3)/3) - ((4 5 6)/3)) = -3 -> first 6 elements

what I did so far:

def diff_avg(first_group, second_group, size):
    results =[]
    x = np.mean(first_group) - np.mean(second_group)
    results.append(x)
    return results

I don't know how to add the size parameter

I can use the first size elements with arr[:size] but how to get the next size elements.

Does anyone can help me?

CodePudding user response:

First, truncate the array to remove the extra items:

size = 3
sized_array = arr[:arr.size // (size * 2) * (size * 2)]
# array([1, 2, 3, 4, 5, 6])

Next, reshape the sized array and get the means:

means = sized_array.reshape([2, size, -1]).mean(axis=1)
# array([[2.], [5.]])

Finally, take the differences:

means[0] - means[1]
#array([-3.])
  • Related