python中的dsearchn等价物
是否有一个Scipy或Numpy函数在python中执行python中的dsearchn等价物,python,python-3.x,matlab,numpy,scipy,Python,Python 3.x,Matlab,Numpy,Scipy,是否有一个Scipy或Numpy函数在python中执行dsearchnMATLAB命令 dsearchn返回与给定向量中输入值最接近的值的索引。您可以执行以下操作: x = np.array([1.1, 1.2, 1.22, 1.4]) v = 1.21 def dsearchnn(x, v): return np.where(np.abs(x-v) == np.abs(x-v).min())[0] dsearchnn(x, v) array([1,2]) 近似等效效率的方法可能
dsearchn
MATLAB命令
dsearchn
返回与给定向量中输入值最接近的值的索引。您可以执行以下操作:
x = np.array([1.1, 1.2, 1.22, 1.4])
v = 1.21
def dsearchnn(x, v):
return np.where(np.abs(x-v) == np.abs(x-v).min())[0]
dsearchnn(x, v)
array([1,2])
近似等效效率的方法可能是scipy或更好的方法: 这里
p
和PQ
是来自文档的点和查询点。MATLAB使用第一个维度作为点的维度,而scipy使用最后一个维度,因此使用转置
与MATLAB方法不同,它是一步完成的,使用
KDTree
us分两步完成:首先构建树对象,然后在树对象上运行。是否有方法检测具有相同距离的两个索引?例如,在x=[1.1,1.2,1.22,1.3,1.4]中,值1.2和1.22与v
的距离相同。是的,刚刚编辑了答案。浮点精度可能有问题@Enigmacydsearchn
用于多维点,而不仅仅是scalars它的语法与MATLAB的dsearchn
类似吗?因为它没有给出欧氏空间中距离最小的值的指数。我也看了文档,但我不知道它是如何工作的,以及为什么你要转置PQ
?PQ
可以是一个标量,不需要转置。@Enigmacy。根据文档,scipy和Matlab版本相互向后解释尺寸。如果数组的格式已经正确,则无需转置。query
的返回值包含一个值和一个索引。你读了哪些文档?我从Scipy v1.6.1中查看了这一点,这是一个良好的开端。我们也来看看查询方法。我在答案中添加了一个链接和一个简介:
from scipy.spatial import KDTree
kdt = KDTree(P.T)
kdt.query(PQ.T)