我有一个数组:
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.])