2017-09-27 151 views
1

使用np.where或类似的方法从列表中保存元素最简单的方法是什么?列表中的Numpy mask

简单例子:

l1 = [-144.92170726320364, 697.7739312692029, -2.0, -2.0] 

我想保持其是从-2.0不同的元素。我想:

l2 = [l1[index] for index in len(l1) if l1[index] != -2.0] 

除了:

l3 = np.where(l1 != -2.0) 

在第一种情况下我接收错误。在第二种情况下,我获得了(array([0]),)

感谢您的帮助。

回答

1

普通的Python阵列

l2 = [i for i in l1 if i!=-2.0] 

numpy的阵列

l1 = np.array(l1) 
l2 = l1[l1 != -2.0] 
3

如果您改变listnumpy.array

>>> import numpy as np 
>>> l1 = np.array([-144.92170726320364, 697.7739312692029, -2.0, -2.0]) 

你可以做对标比较

>>> l1 != -2.0 
array([ True, True, False, False], dtype=bool) 

然后使用该表达式来索引到你原来的数组

>>> l1[l1 != -2.0] 
array([-144.92170726, 697.77393127]) 
2

试试这个:

[l for l in l1 if l != -2.0]