Numpy:根据条件获取最小值的索引
我有一个这样的数组:
array([[ 10, -1],
[ 3, 1],
[ 5, -1],
[ 7, 1]])
我想要的是找到第一列中最小值的行的索引,同时第二列的值要是-1。
简单来说,就是用np.argmin()
这个函数,但要加个条件,要求第二列的值等于-1(或者其他任何值也可以)。
在我的例子中,我想得到2
,因为[ 5, -1]
的索引是2。
我很确定有个简单的方法可以做到这一点,但我找不到。
3 个回答
0
这个方法效率不高,但如果你有一个比较小的数组,并且想要一个一行代码的解决方案:
>>> a = np.array([[ 10, -1],
... [ 3, 1],
... [ 5, -1],
... [ 7, 1]])
>>> [i for i in np.argsort(a[:, 0]) if a[i, 1] == -1][0]
2
2
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这种时候,我们需要找到问题的根源,通常可以通过查看错误信息来帮助我们理解发生了什么。
错误信息就像是程序给我们的提示,它告诉我们哪里出了问题。比如,可能是某个变量没有定义,或者某个函数没有正确调用。理解这些错误信息是解决问题的第一步。
此外,很多时候我们可以在网上找到类似的问题和解决方案,比如在StackOverflow这样的论坛上。这里有很多开发者分享他们的经验和解决办法,我们可以借鉴他们的思路。
总之,遇到问题时,不要慌张,仔细查看错误信息,利用网络资源,逐步排查,最终就能找到解决办法。
np.argwhere(a[:,1] == -1)[np.argmin(a[a[:, 1] == -1, 0])]
2
import numpy as np
a = np.array([
[10, -1],
[ 3, 1],
[ 5, -1],
[ 7, 1]])
mask = (a[:, 1] == -1)
arg = np.argmin(a[mask][:, 0])
result = np.arange(a.shape[0])[mask][arg]
print result
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。