我想做以下 Matlab 代码:
indexes=find(data>0.5);
data2=data(indexes(1):indexes(length(indexes))+1);
在 Python 中,所以我做了:
indexes=[x for x in data if x>0.5]
init=indexes[1]
print(indexes)
end=indexes[len(indexes)]+1
data2=data[init:end]
但我收到此错误:
end=indexes[len(indexes)]+1 IndexError:列表索引超出范围
我认为 Python 中的索引可能与我在 Matlab 中得到的索引不同?
您的列表理解不是构建索引列表,而是构建项目本身的列表。您应该使用enumerate
以下方法在项目旁边生成索引:
ind = [i for i, x in enumerate(data) if x > 0.5]
切片无需如此冗长:
data2 = data[ind[0]: ind[-1]+1] # Matlab's index 1 is Python's index 0
对索引列表进行索引len(ind)
将给出IndexError
Python 中的as 索引从 0 开始(与 Matlab 不同),最后一个索引应使用ind[len(ind)-1]
或 简单地获取ind[-1]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句