猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
请问在numpy数组中找到最近的值
在numpy数组中找到最近的值
是否有一种非常规的方法,例如函数,可以找到
最近值
在数组里?
例子:
np.find_nearest( array, value )
天涯尽头无女友
浏览 635
回答 3
3回答
慕仙森
import numpy as npdef find_nearest(array, value): array = np.asarray(array) idx = (np.abs(array - value)).argmin() return array[idx]array = np.random.random(10)print(array)# [ 0.21069679 0.61290182 0.63425412 0.84635244 0.91599191 0.00213826# 0.17104965 0.56874386 0.57319379 0.28719469]value = 0.5print(find_nearest(array, value))# 0.568743859261
0
0
0
缥缈止盈
如果您的数组是排序的,并且非常大,这是一个更快的解决方案:def find_nearest(array,value): idx = np.searchsorted(array, value, side="left") if idx > 0 and (idx == len(array) or math.fabs(value - array[idx-1]) < math.fabs(value - array[idx])): return array[idx-1] else: return array[idx]这将扩展到非常大的数组。如果不能假定数组已经排序,则可以轻松地修改上面的内容,以便在方法中进行排序。对于小型数组来说,这太过分了,但是一旦它们变大,速度就会快得多。
0
0
0
富国沪深
稍作修改,上面的答案适用于任意维数的数组(1D,2d,3d,.):def find_nearest(a, a0): "Element in nd array `a` closest to the scalar value `a0`" idx = np.abs(a - a0).argmin() return a.flat[idx]或者,写成一行:a.flat[np.abs(a - a0).argmin()]
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Python
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续