我正在转换此数组:
x = np.array([[0, 0, 1], [1, 1, 0], [0, 1, 0], [1, 0, 0], [0, 0, 0]])
收件人:[2, 0, 1, 0, 0]
。你知道吗
基本上,我想返回每个子数组中第一个1
的索引。然而,我的问题是我不知道如何处理没有1
的场景。如果找不到1
,我希望它返回0
(如我的示例中所示)。你知道吗
下面的代码运行良好,但对于我提到的场景抛出IndexError: index 0 is out of bounds for axis 0 with size 0
:
np.array([np.where(r == 1)[0][0] for r in x])
处理这个问题的简单方法是什么?它不需要局限于努比。哪里. 你知道吗
顺便说一下,我正在使用python3。你知道吗
对代码的一个简单修改就是在列表中添加一个条件:
获得相同结果的更简洁、更快速的方法是:
或者,相当于:
使用
1s
的mask
,然后沿着每一行argmax
获取第一个匹配索引以及any
来检查有效行(至少有一个1
的行)-现在,所有
False
上的argmax
将返回0
。所以,这就直接影响到了问题的解决。因此,我们可以简单地使用mask.argmax(1)
结果。但是在一般情况下,如果无效的说明符,我们称之为invalid_val
不是0
,我们可以在np.where
内指定它,就像这样-另一种方法是获取掩码上的第一个匹配索引,然后索引到掩码中,查看是否有任何索引值是
False
,并将它们设置为0s
-相关问题 更多 >
编程相关推荐