我想在向量上广播一个函数 f,以便结果是一个矩阵 P,其中 P[i,j] = f(v[i], v[j])。我知道我可以简单地做到这一点:
P = zeros( (v.shape[0], v.shape[0]) )
for i in range(P.shape[0]):
for j in range(P.shape[0]):
P[i, j] = f(v[i,:], v[j,:])
或更老套:
from scipy.spatial.distance import cdist
P = cdist(v, v, metric=f)
但我正在寻找最快和最整洁的方法来做到这一点。这似乎是 numpy 应该内置的广播功能。有什么建议么?