我的数据如下:
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。
答案 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