两个蟒蛇矩阵之间的欧几里得距离没有双 for 循环?



我正在使用两个 numpy 矩阵,U(尺寸 Nux 3(和M(尺寸 3 x Nm(

A 包含 Nu 用户和 3 个功能

M 包含 Nm 电影(以及相同的 3 个功能(

对于U的每个用户,我想计算它到每部电影的欧几里得距离(以M为单位((所以我需要计算 Nu*Nm 欧几里得距离(。

如果没有明确的双 for 循环,这可能吗?我正在使用大尺寸矩阵,双 for 循环可能会花费太多时间。

提前谢谢。

查看scipy.spatial.distance.cdist。像这样的事情可以:

from scipy.spatial.distance import cdist
dist = cdist(U, M.T)

恐怕不是。您需要计算每对(用户,电影(的欧几里得距离,因此您的时间复杂度为numOfUsers * numOfMovies,这将是一个双倍的for循环。你不能做比这更少的操作,除非你愿意跳过一些对。你能做的最好的事情就是优化欧几里得距离计算,但你要做的运算数量将是二次的。

最新更新