我有一个二维数组,如:
r1= np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6]])
我需要为每一行找到大于默认值的值的第一次出现。我正在使用这个:
default=2
ans= np.argmax(r1>default,1)
问题是如果存在大于默认值的值,它会起作用,但如果找不到这样的值,则返回零。所以它在 2 种情况下返回零 - 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)
还有其他建议可以简化吗?