Python &引用;列表索引必须是整数,而不是“列表”;列举

Python &引用;列表索引必须是整数,而不是“列表”;列举,python,Python,我有这个密码 cNames = data["channelnames"] goodChannels = [i for i,x in enumerate(cNames) if x!='Skipped'] data["channelnames"]=cNames[goodChannels] 稍后我需要通道号,但是cNames[GoodChannel]抛出错误“列表索引必须是整数,而不是列表” 列表由整数组成。有没有办法让它正常工作 cNames[np.array(goodChannels)]无法处理

我有这个密码

cNames = data["channelnames"]
goodChannels = [i for i,x in enumerate(cNames) if x!='Skipped']
data["channelnames"]=cNames[goodChannels]
稍后我需要通道号,但是cNames[GoodChannel]抛出错误“列表索引必须是整数,而不是列表”

列表由整数组成。有没有办法让它正常工作


cNames[np.array(goodChannels)]无法处理相同的错误,因此我假设这里还有其他问题。

您需要另一个列表理解:

data["channelnames"] = [cNames[i] for i in goodChannels]

你认为cNames[goodChannels]有什么作用?什么索引号是列表?不能用另一个整数列表索引列表。它必须是一个片或一个整数。Matlab翻译错误。我现在明白问题所在了。感谢you@ochensati您可以使用numpy数组和pandas数据结构实现这一点,但不能使用普通的python列表。不过,一般来说,最好使用布尔掩码而不是索引数组。或者更好的是,跳过中间人,只需
data['channelnames']=[name for name In data['channelnames']if name!='skipped']