python - 查找与先前元素的元素的平均值并将其求和并平均
问题描述
我有一组数字,只是为了让它更容易:
import numpy as np
A = np.array([0, 1, 2, 3, 4, 5, ...])
我想要:
((0+1)/2 + (2+1)/2)/2 , ((1+2)/2 + (3+2)/2)/2, ....
我不知道该怎么做。到目前为止我得到了什么:
B = (A[1:]+A[:-1])/2.0
我希望得到:
B = [1, 2, 3, 4, 5 ...]
任何帮助都会很棒。谢谢你。
解决方案
>> import numpy as np
>> def pair_avg(a):
>> return (a[1:]+a[:-1])/2.0
>>
>> a = np.arange(10)
>> pair_avg(pair_avg(a))
array([1., 2., 3., 4., 5., 6., 7., 8.])
pair_avg 对 a 中的每一对进行运行平均。据我了解,您想这样做两次。我认为您应该将此操作视为同一函数的递归应用。如果你总是想递归两次,你可以这样做
>> def oper(a):
>> b = (a[1:]+a[:-1])/2.0
>> return (b[1:]+b[:-1])/2.0
>>
>> oper(a)
array([1., 2., 3., 4., 5., 6., 7., 8.])
当然,这相当于原始数组元素的某种加权和。当您将其应用于整数时,每 2nd 应用程序pair_avg
只会剪掉原始数组的另外两个端点值。
推荐阅读
- javascript - 我在使用 javascript 编辑 css 时遇到问题
- node.js - 错误:EBUSY:资源繁忙或锁定,rmdir
- android - 如何异步调用 HTTP Post API?
- .net - GCP: 403 调用者没有权限
- java - 返回两个数组的排序组合
- python - args中的点/空格名-python
- javascript - 如何从 Html 单选按钮获取值
- sql-server - 如何在 Manjaro linux 中配置 SQL Server?
- spring-boot - 如何模拟 Feign 客户端
- java - 程序类型已经存在:com.bumptech.glide.GeneratedAppGlideModule