我是Python初学者。我试图通过平均多个邻居的分量来定义一个“平滑”浮点列表的函数。
这是我的代码:
import random
random.seed(1)
def moving_window_average(x, n_neighbors=1):
width = n_neighbors*2 + 1
y = list()
for i in range(n):
y.append(sum(x[i+t])/width for t in range(-n_neighbors,n_neighbors))
return y
x=[0,10,5,3,1,5]
avg=moving_window_average(x, 1)
print(avg)
在输出中,我得到的似乎是“发电机”列表,这是我不知道广告所期望的。特别是:
[<generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992aba0>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992ab48>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992a728>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992aa98>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992aa40>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992a9e8>]
有人可以指出我在这里发生的事情吗?
非常感谢
问题在于您用于“平滑”数据的表达式编写不正确,因此其计算结果称为生成器表达式。我认为以下代码是表达它的正确方法:
import random
random.seed(1)
n = 3
def moving_window_average(x, n_neighbors=1):
width = n_neighbors*2 + 1
y = list()
for i in range(n):
y.append(sum(x[i+t] for t in range(-n_neighbors,n_neighbors)) / width)
return y
x=[0,10,5,3,1,5]
avg=moving_window_average(x, 1)
print(avg)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句