Python 用最接近的numpy数组/数据帧替换每条记录

Python 用最接近的numpy数组/数据帧替换每条记录,python,pandas,numpy,Python,Pandas,Numpy,因此,情况是: 我有两个numpy 2d数组/数据帧(不管我将使用什么)。每个数组/数据帧包含大约106条记录。每条记录是一行,包含10个浮点数 我需要用第一个表中的行替换第二个数组(dataframe)中的每一行,与之相比,第一个表的MSE最小。我可以很容易地使用“for”循环,但它听起来慢得可怕。有没有我看不到的漂亮的numpy/pandas解决方案 附言 例如: arr1: [1,2,3],[4,5,6],[7,8,9]] arr2:[9,10,11],[3,2,1],[5,5,5]] 结

因此,情况是:

我有两个numpy 2d数组/数据帧(不管我将使用什么)。每个数组/数据帧包含大约106条记录。每条记录是一行,包含10个浮点数

我需要用第一个表中的行替换第二个数组(dataframe)中的每一行,与之相比,第一个表的MSE最小。我可以很容易地使用“for”循环,但它听起来慢得可怕。有没有我看不到的漂亮的numpy/pandas解决方案

附言 例如:

arr1: [1,2,3],[4,5,6],[7,8,9]]

arr2:[9,10,11],[3,2,1],[5,5,5]]

结果应该是:[[7,8,9],[1,2,3],[4,5,6]]


在本例中,每条记录中有3个数字,总共有3条记录。我在每条记录中都有10个数字,使用最近邻法总共大约有1000000条记录应该可以在这里使用,特别是如果你想减少计算时间的话

我将给出一个使用的简单示例,尽管可能有更有效的方法

将numpy导入为np
从sklearn.neights导入近邻
#示例数据
X=np.random.randint(1000,大小=(10000,10))
Y=np.random.randint(1000,大小=(10000,10))
def映射到最近的(源,查询):
邻居=最近的邻居().fit(源)
索引=邻居.kneighbors(查询,1,返回距离=False)
返回查询[index.ravel()]
结果=映射到最近的(X,Y)

我注意到这是计算欧几里德距离,而不是MSE。这对于找到最接近的匹配应该很好,因为MSE是欧几里德距离的平方。

你能给我们一些测试数据和你所做的任何尝试吗?@DerekEden,好了。尝试…唯一简单的解决方案是计算第二个表中每条记录的MSE。好的,对我来说是非常好的解决方案。我期望不太具体的解决方案,稍后尝试不同的指标,但现在就可以了