python - 在python中访问数组的位置[i-1] - 过滤器
问题描述
我正在尝试在 Python 中设置一个过滤器,但我被困在一个基本的东西中。
这是我必须实现的功能:
y[n] = (1 − λ) · x[n] + λ · y[n − 1]
我正在读取一个 m 文件并应用过滤器。
这是代码:
import sys
import numpy as np
import matplotlib.pyplot as plt
y = np.loadtxt('acs712_192us.m')
size = len(y)
x = np.arange(0, size)
out = []
lamb = 0.9
for i in range(0, len(y)):
out.append(((1-lamb) * y[i]) + (lamb * out[i - 1]))
plt.plot(x, y)
plt.plot(x, out)
plt.show()
当我运行这个程序时,得到以下错误:
文件“main_LI.py”,第 15 行,in out.append(((1-lamb) * y[i]) + (lamb * out[i - 1])) IndexError: list index out of range
我知道我无法访问 out[-1] 位置(在第一个循环中),也许这是问题所在?
有人有任何提示吗?
谢谢你们!
解决方案
首先,您可以在 Python中使用负索引。问题是您提供的索引不存在。
out
最初是一个空列表,所以问题是您试图访问第一次迭代中不存在的索引:
import sys
import numpy as np
import matplotlib.pyplot as plt
y = np.loadtxt('acs712_192us.m')
size = len(y)
x = np.arange(0, size)
out = []
lamb = 0.9
for i in range(len(y)):
if i == 0:
out.append(value) # value is what you want out[0] to be
else:
out.append(((1-lamb) * y[i]) + (lamb * out[i - 1]))
plt.plot(x, y)
plt.plot(x, out)
plt.show()
推荐阅读
- java - 打印在日志中的 Jar 文件名
- c++ - gluLookAt 不断旋转相机
- akeneo - 带有状态和批量操作的 Akeneo 错误
- javascript - @azure/msal-angular 的元数据版本不匹配
- c++ - put_time() 忽略时区偏移的转换说明符“z”
- keras - 将权重加载到 VGG16 模型时如何解决“TypeError: +: 'int' and 'str' 的不支持的操作数类型”
- batch-file - 如何在批处理脚本中隐藏 MD 和 MOVE 命令的输出消息?
- soap - 在 WSDL 中包含 XML 格式
- javascript - 根据背景颜色更改多个元素颜色
- java - 有没有一种有效的方法来连接两个带有(更深)嵌套数组字段的大型数据集?