python - 第一次出现大于 numpy 数组中给定值的值

标签 python arrays numpy argmax

我有一个二维数组,例如:

r1= np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6]])

我需要为每一行查找第一次出现的大于默认值的值。我正在使用这个:

default=2
ans= np.argmax(r1>default,1)

问题是,如果有一个大于默认值的值,它会起作用,但如果找不到这样的值,则返回零。所以它在两种情况下返回零 - 1) 每行第一个值大于默认值 2) 每个值都不大于默认值

#simple case:
In[31]: np.argmax(r1>2,1)
Out[31]: array([2, 1, 0], dtype=int64)

#trouble case- both returning zeros
In[32]: np.argmax(r1>7,1)
Out[32]: array([0, 0, 0], dtype=int64)
In[33]: np.argmax(r1>0.5,1)
Out[33]: array([0, 0, 0], dtype=int64)

我目前正在使用它来解决这个问题:

In[37]: np.any(r1>7,1) + np.argmax(r1>7,1)-1
Out[37]: array([-1, -1, -1], dtype=int64)
In[38]: np.any(r1>0.5,1) + np.argmax(r1>0.5,1)-1
Out[38]: array([0, 0, 0], dtype=int64)

还有其他建议可以简化此操作吗?

最佳答案

表单的嵌套列表(二维数组)

l = [[n1,n2,n3],[m1,m2,m3]...]

可以使用遍历每个嵌套列表中大于给定数字“d”的第一个值

[[i for i in x if i>d][0] for x in l]

关于python - 第一次出现大于 numpy 数组中给定值的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40372470/

相关文章:

python - 类型错误 : 'module' object is not callable API

python - 编译后的 Python 代码和 C++ 代码一样快吗?

c - 为什么程序可以得到正确的输入,但根据数组打印出错误的答案?

c++ - 通过函数c++填充指针数组

c - 如何读取文件并验证输入?

python - 如何将 1 大小的 numpy 数组整齐地转换为标量?当输入不是 1 大小的数组时,Numpy "asscalar"会给出错误。

python - 用大写字母拆分句子

python - Pandas .str.replace 和不区分大小写

python - ndarray.any()错误: ValueError: 'axis' entry is out of bounds

python - 如何将零轴移动到python中的最后一个位置?