首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在numpy数组中查找最接近给定值的索引。仅限于外部索引

在numpy数组中查找最接近给定值的索引。仅限于外部索引
EN

Stack Overflow用户
提问于 2017-06-23 22:27:12
回答 1查看 219关注 0票数 3

我有一个名为directions的数组,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
[[ 315.    326.31  341.57    0.     18.43   33.69   45.  ]
[ 303.69  315.    333.43    0.     26.57   45.     56.31]
[ 288.43  296.57  315.      0.     45.     63.43   71.57]
[ 270.    270.    270.      0.     90.     90.     90.  ]
[ 251.57  243.43  225.    180.    135.    116.57  108.43]
[ 236.31  225.    206.57  180.    153.43  135.    123.69]
[ 225.    213.69  198.43  180.    161.57  146.31  135.  ]]

我想搜索数组并从给定值(例如45)中找到最接近的值的索引。到目前为止,我是这样做的:

代码语言:javascript
代码运行次数:0
运行
复制
x = np.abs(directions-45)
idx = np.where(x == x.min())

这是可行的,因为它会返回满足此条件的所有索引。但是,我希望将返回的索引限制为数组外边缘上的索引,即顶部和底部的行,以及最右边和最左边的列。如果一个数字更接近于不在外部边缘的给定值,那么我想扩大搜索范围,直到找到外部边缘上最接近的数字。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-23 23:14:57

您可以添加下面这行

代码语言:javascript
代码运行次数:0
运行
复制
x[1:-1, 1:-1] = x.max()+1

在找到idx之前,使用高于任何边缘值的值覆盖中心的值。

代码语言:javascript
代码运行次数:0
运行
复制
x = np.abs(directions-45)
x[1:-1, 1:-1] = x.max()+1
idx = np.where(x == x.min())
idx
Out[25]: (array([0], dtype=int64), array([6], dtype=int64))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44723847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档