如何从python上的列表中获取一系列值?
我想执行以下Matlab代码:如何从python上的列表中获取一系列值?,python,arrays,matlab,list,indexing,Python,Arrays,Matlab,List,Indexing,我想执行以下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=索引[len
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=索引[len(索引)]+1索引器错误:列表索引超出范围
我认为Python中的索引可能与我在Matlab中得到的索引不同?您的列表理解不是构建索引列表,而是构建项目本身的列表。您应该使用
枚举
在项目旁边生成索引:
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)
对索引列表进行索引将给出一个索引器
,因为Python中的索引从0开始(与Matlab不同),最后一个索引应该用ind[len(ind)-1]
或简单地用ind[-1]
你的列表理解并不是在构建索引列表,而是一份物品清单。您应该使用枚举
在项目旁边生成索引:
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)
对索引列表进行索引将给出一个索引器
,因为Python中的索引从0开始(与Matlab不同),最后一个索引应使用ind[len(ind)-1]
或简单地使用ind[-1]
len(indexes)
将给出列表中最后一个元素的索引,因此该值加1超出了列表的范围
看起来您要做的是找到列表中值大于0.5的索引,并将这些值放入data2
。这更适合于numpy阵列
import numpy as np
data2 = data[data > 0.5]
len(index)
将为您提供列表最后一个元素的索引,因此值加1超出列表范围
看起来您要做的是找到列表中值大于0.5的索引,并将这些值放入data2
。这更适合于numpy阵列
import numpy as np
data2 = data[data > 0.5]
是的,它们不一样。你建立索引的代码是错误的。是的,它们不一样。并且您用于构建索引的代码错误。这不会在最后一个匹配索引后添加额外项。这不会在最后一个匹配索引后添加额外项。