Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 第一次出现大于numpy数组中给定值的值_Python_Arrays_Numpy_Argmax - Fatal编程技术网

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

Python 第一次出现大于numpy数组中给定值的值,python,arrays,numpy,argmax,Python,Arrays,Numpy,Argmax,我有一个2D数组,如: 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

我有一个2D数组,如:

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)
有没有其他的简化建议?

表单的嵌套列表(2d数组)

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

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

老实说,看起来已经相当简洁了。但我认为有一个替代方案可能有效:

ans = np.argmax(r1>default,1) - (np.amin(r1<=default,1))

ans=np.argmax(r1>默认值,1)-(np.amin(r1)必须与
argmax()一起使用至少一个func)
,所以在我看来这很简单。谢谢,这对于我想要实际值的情况很有用。不要回答我想要这些值的索引的问题,也不要在找不到值的情况下出现错误。仍然有一个很好的骗局很久没有被记录。也可以对索引进行操作。
[y for y in[[x.index(i)]对于x中的i,如果i>d]对于l中的x]如果len(y)>0]
ans = np.argmax(r1>default,1) - (np.amin(r1<=default,1))