在Python中从2D数组中选择正的某些值

时间:2016-11-28 15:34:08

标签: python arrays numpy

我想从相同的数组中选择x,y值,例如:

xy = [[0.0, 3], [0.1, 1], [0.2, -1]]

其中y> 0,所以输出应该是

array[ [0.0, 3], [0.1, 1]]

我试过像

这样的东西
[x for x in xy if y>0]

,但它返回以下错误:

  

ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()。

4 个答案:

答案 0 :(得分:2)

试试这个:

ans = [i for i in xy if i[1] > 0]

输出:

[[0.0, 3], [0.1, 1]]

答案 1 :(得分:1)

将对象切片以仅比较y值并使用生成的布尔掩码:

In [12]:
xy[xy[:,1]>0]

Out[12]:
array([[ 0. ,  3. ],
       [ 0.1,  1. ]])

此处xy[:,1]仅为您提供y值:

In [13]:
xy[:,1]

Out[13]:
array([ 3.,  1., -1.])

这是结果布尔掩码:

In [14]:
xy[:,1] > 0

Out[14]:
array([ True,  True, False], dtype=bool)

答案 2 :(得分:1)

使用itertools.compress的另一种方法:

from itertools import compress

xy = [[0.0, 3], [0.1, 1], [0.2, -1]]
res = compress(xy, [item[1] > 0 for item in xy])

<强>输出:

>>> list(res)
[[0.0, 3], [0.1, 1]]

答案 3 :(得分:0)

试试这个:

[x for x in xy if x[1]>0]