我正在使用numpy计算两组点之间的成对(平方)欧几里德距离(存储为两个矩阵的行)。这是我当前拥有的代码:
import numpy as np
def squared_pair_dist(x, y):
x = np.expand_dims(x, -2)
return np.sum(np.square(x - y), axis=-1)
p = 10
x = np.random.standard_normal((100, p))
y = np.random.standard_normal((1000, p))
d = squared_pair_dist(x, y) # get 100x1000 squared-distance matrix
我的程序大部分时间都在计算np.sum(np.square(x - y), axis=-1)
上。有没有办法加快速度?
在我的应用程序中,p
始终相对较小,典型值范围为1到15。其他尺寸通常较大。