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

时间:2017-10-16 12:34:59

标签: python pandas numpy

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

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。我在哪里计算dist: 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]

1 个答案:

答案 0 :(得分:0)

假设t_1t_2ndarray

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)