我想从相同的数组中选择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()。
答案 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]