Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从python上的列表中获取一系列值?_Python_Arrays_Matlab_List_Indexing - Fatal编程技术网

如何从python上的列表中获取一系列值?

如何从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

我想执行以下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(索引)]+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]

是的,它们不一样。你建立索引的代码是错误的。是的,它们不一样。并且您用于构建索引的代码错误。这不会在最后一个匹配索引后添加额外项。这不会在最后一个匹配索引后添加额外项。