从另一个列表中的索引中删除列表中的元素

时间:2016-02-15 16:24:34

标签: python numpy

我有我的代码示例,我试图过滤一些数据。

import numpy as np
from scipy.signal import argrelextrema

data = np.arange(data)
index = argrelextrema(data,np.greater_equal)[0]
value = [data[i] for i in index if data[i] > 1000] 

我的问题在于        if data[i] > 1000值列表的元素少于索引列表。所以我从值列表中删除的元素我也想从索引列表中删除。但是索引列表只包含(惊奇)数据列表中的值索引。

1 个答案:

答案 0 :(得分:0)

我很想创建一个新的过滤索引列表,与新值列表一起使用。

value = [data[i] for i in index if data[i] > 1000] 
findex = [i for i in index if data[i] > 1000] 

现在findex包含一组1-1过滤索引,您可以将它们与值列表一起使用。最好同时解压缩两个变量,然后使用zip将它们分开:

mix = [(i,data[i]) for i in index if data[i] > 1000] 
xim = [a for a in zip(*mix)]
indexes = list(xim[0])
values = list(xim[1])

同样,我确信这是一种更优雅的方式,但在这里你可以看到每个阶段发生了什么。