python – 需要numpy argmin优雅的解决方案.
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 需要numpy argmin优雅的解决方案.,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1746字,纯文字阅读大概需要3分钟。
内容图文
![python – 需要numpy argmin优雅的解决方案.](/upload/InfoBanner/zyjiaocheng/758/ad46c1f662de4ec7858828f636687f9a.jpg)
在python中找到数组最小值的索引我usey = numpy.argmin(someMat)
我能找到这个矩阵的最小值,使它不能以一种整齐的方式位于指定的范围内吗?
解决方法:
“我可以找到这个矩阵的最小值,使它不会以一种整齐的方式位于指定的范围内吗?”
如果您只关心满足某些条件而不是位置的最小值,那么
>>> numpy.random.seed(1)
>>> m = numpy.random.randn(5.,5.)
>>> m
array([[ 1.62434536, -0.61175641, -0.52817175, -1.07296862, 0.86540763],
[-2.3015387 , 1.74481176, -0.7612069 , 0.3190391 , -0.24937038],
[ 1.46210794, -2.06014071, -0.3224172 , -0.38405435, 1.13376944],
[-1.09989127, -0.17242821, -0.87785842, 0.04221375, 0.58281521],
[-1.10061918, 1.14472371, 0.90159072, 0.50249434, 0.90085595]])
>>> m[~ ((m < 0.5) | (m > 0.8))].min()
0.50249433890186823
如果你确实想通过argmin获取位置,那么这有点棘手,但一种方法是使用掩码数组:
>>> numpy.ma.array(m,mask=((m<0.5) | (m > 0.8))).argmin()
23
>>> m.flat[23]
0.50249433890186823
请注意,此处的条件是翻转的,因为对于排除的值,掩码为True,而不是包含的值.
更新:似乎“在指定范围内”并不意味着最小值不在某些范围内,而是您希望基于x,y坐标从搜索中排除矩阵的部分.这是一种方式(与以前相同的矩阵):
>>> xx, yy = numpy.indices(m.shape)
>>> points = ((xx == 0) & (yy == 0)) | ((xx > 2) & (yy < 3))
>>> points
array([[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[ True, True, True, False, False],
[ True, True, True, False, False]], dtype=bool)
>>> m[points]
array([ 1.62434536, -1.09989127, -0.17242821, -0.87785842, -1.10061918,
1.14472371, 0.90159072])
>>> m[points].min()
-1.1006191772129212
如果需要位置,请使用相应的蒙版数组变体. [编辑使用指数代替mgrid;我实际上已经忘记了它,直到它今天用于另一个答案!]
如果我仍然错了:^)这也不是你想要的,请编辑你的问题以包括你想要的输入和输出的3×3例子.
内容总结
以上是互联网集市为您收集整理的python – 需要numpy argmin优雅的解决方案.全部内容,希望文章能够帮你解决python – 需要numpy argmin优雅的解决方案.所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。