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

Python Numpy:数组的数组,选择第一个大于零的值,python,numpy,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 您可以对生成器表达式使用next,然后使用列表索引: res = next(x for x in all_arr if x[0] > 0)[1] # 1 不要对变

我的数据如下所示:

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

您可以对生成器表达式使用
next
,然后使用列表索引:

res = next(x for x in all_arr if x[0] > 0)[1]  # 1
不要对变量名使用
all
,这是内置的


如果您对使用NumPy数组优化性能感兴趣,请参阅。

您可以对生成器表达式使用
next
,然后使用列表索引:

res = next(x for x in all_arr if x[0] > 0)[1]  # 1
不要对变量名使用
all
,这是内置的


如果您对使用NumPy阵列优化性能感兴趣,请参阅。

您可以使用条件掩蔽

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

您可以使用条件掩蔽

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

为什么要投否决票?提供一些反馈,让我改进解决方案此答案适用于NumPy+1。有了免责声明,小型阵列的速度会快,大型阵列的速度会慢。@jpp:OP的queston以“Numpy:array of array”开头,这就是为什么我使用Numpy阵列为什么要向下投票?提供一些反馈,让我改进解决方案此答案适用于NumPy+1。在免责声明中,小数组的速度快,大数组的速度慢。@jpp:OP的queston以“Numpy:array of array”开头,这就是我使用Numpy数组的原因。我在jupyter笔记本中有以下错误:“builtin_function_或_method”对象不可编辑。数据只是一个例子。@Viktor.w,重新启动会话,确保没有使用任何内置变量名。例如,使用
all
all\u arr
。我的解释不够精确。在我的原始代码中,数组的类型是numpy。ndarray@Viktor.w,我的代码也可以使用NumPy数组(您可以使用与列表列表相同的方式迭代2d数组)。问题是其他的。我的jupyter笔记本中有以下错误:“builtin\u function\u或\u method”对象不可编辑。数据只是一个例子。@Viktor.w,重新启动会话,确保没有使用任何内置变量名。例如,使用
all
all\u arr
。我的解释不够精确。在我的原始代码中,数组的类型是numpy。ndarray@Viktor.w,我的代码也可以使用NumPy数组(您可以使用与列表列表相同的方式迭代2d数组)。这是另外一个问题。