使用np.where
或类似内容从列表中保存元素的最简单方法是什么?
一个简短的例子:
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]),)
。
感谢您的帮助。
答案 0 :(得分:3)
如果您将list
更改为numpy.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])
答案 1 :(得分:2)
试试这个:
[l for l in l1 if l != -2.0]
答案 2 :(得分:1)
普通Python数组
l2 = [i for i in l1 if i!=-2.0]
Numpy数组
l1 = np.array(l1)
l2 = l1[l1 != -2.0]