numpy:数组的数组,选择大于零的第一个值

时间:2019-02-04 10:01:15

标签: python numpy

我的数据如下:

all = [[-2,-1,0],[-1,-0.5,3],[-1,0.2,3],[0.2,1,3],[0.5,1,4]]

我需要做的是选择第一个数组,该数组的位置[0]的值大于零,并向我返回该特定数组中位置1的元素的值。在我的情况下,它将是数组[0.2,1,3],在这个数组中,它应该返回1。

2 个答案:

答案 0 :(得分:3)

您可以将next与生成器表达式一起使用,然后使用列表索引:

res = next(x for x in all_arr if x[0] > 0)[1]  # 1

请勿将all用作变量名,这是内置变量。

如果您对使用NumPy数组优化性能感兴趣,请参见Efficiently return the index of the first value satisfying condition in array

答案 1 :(得分:1)

您可以使用条件遮罩

all_arr = np.array([[-2,-1,0],[-1,-0.5,3],[-1,0.2,3],[0.2,1,3],[0.5,1,4]])
boolean = all_arr[:,0]>0
# [False False False  True  True]

print (all_arr[boolean][0,1]) # 0 because you just need the very first occurence
# 1.0