Python 查找两个一维数组之间的最近点



>我有两个不同长度的一维数组

t_1 and t_2 where len(t_1)<len(t_2) .

我想找到t_2 for each element in t_1中最近的点

我的代码如下所示:

import numpy as np
t_1 = data[1][0]
t_2 = data[2][0]
sizeT2 = len(t_2)
for i in range (0,len(t_1)):
    x = t_1[i]
    dist = np.sqrt(((t_2 - x[:, :sizeT2])**2).sum(axis=0))
    idx[i] = np.argsort(dist)

但是这个不起作用,它给了我错误:invalid index to scalar variable. 在我计算距离的线上:t_1和t_2的示例值:

t_1 = [787093248920, 788197478458, 789119542957, 790116608918, 791221791725, 792276904840, 793284327147, 794281387454, 795471722491]
t_2 = [786185938536, 786198456613, 786201269998, 786209682882, 786217046729, 786226031805, 786243417036, 786261786036, 786268379959, 786285296767, 786291818036, 786301118305, 786316936921, 786327079575, 786330177152, 786339472844, 786345463959, 786348981075, 786352899190]

假设t_1t_2 ndarray

t_2[np.argmin(np.abs(t_1[:, None] - t_2), axis = 1)]

不过,你的玩具问题非常微不足道,因为t_1的所有元素都大于t_2的所有元素

array([786352899190, 786352899190, 786352899190, 786352899190,
       786352899190, 786352899190, 786352899190, 786352899190, 786352899190], dtype=int64)

最新更新