列表中的Numpy面具

时间:2017-09-27 11:53:45

标签: python list numpy

使用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]),)

感谢您的帮助。

3 个答案:

答案 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]