如何解决使用“==”获取数组中的最大元素 参考:
numpy.random.seed(1)
#input
x = numpy.arange(0.,20.,1)
x = x.reshape(5,4)
print(x)
[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]
[12. 13. 14. 15.]
[16. 17. 18. 19.]]
我想访问这个数组中的最大元素。在我的作业中,答案有这一行来访问 x
中的最大值:
print(x[x==x.max()])
[19.]
我搜索了文档,但只找到了一种使用 argmax
访问最大元素的方法。我在文档中没有找到使用 "==
" 的方法,所以我不明白这是如何工作的。任何人都可以解释为什么会这样并显示它在文档中的位置吗?
解决方法
这称为布尔数组索引。
使用 x == x.max()
,生成以下布尔数组:
[[ False False False False]
[ False False False False]
[ False False False False]
[ False False False False]
[ False False False True]]
然后用x[x==x.max()]
,上面的数组作为掩码过滤x
对应的True
元素。
参考:
https://numpy.org/devdocs/reference/arrays.indexing.html#boolean-array-indexing
,这是使用布尔掩码数组。这是documentation。
您正在做的是生成一个布尔数组,然后将其用作掩码以索引到原始数组中:
# x == x.max()
[[ False False False False]
[ False False False False]
[ False False False False]
[ False False False False]
[ False False False True]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。