定义一个函数来计算特定数组大小的均值差



我有一个数组:

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

我想定义一个函数来计算这个数组中元素在给定长度下的均值之差。

例如:

diff_avg(arr, size=2)

预期结果:

[-2, -2]

因为:

((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

:

output: [-3]

因为:

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

我所做的:

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

我不知道如何添加size参数

我可以使用第一个size元素与arr[:size],但如何获得下一个大小

元素。有人能帮我吗?

首先,截断数组以删除多余的项:

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

接下来,重新调整数组的大小并获得方法:

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

最后,取差异:

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