首先,感谢您阅读并花时间回复。
二、问题:
我有一个 PxN 矩阵 X,其中 P 大约为 10^6,N 大约为 10^3。所以,X 比较大,而且不是稀疏的。假设 X 的每一行都是一个 N 维样本。我想在这些 P 个样本之间构建一个成对距离的 PxP 矩阵。假设我对 Hellinger 距离感兴趣。
到目前为止,我依赖于稀疏的 dok 矩阵:
def hellinger_distance(X):
P = X.shape[0]
H1 = sp.sparse.dok_matrix((P, P))
for i in xrange(P):
if i%100 == 0:
print i
x1 = X[i]
X2 = X[i:P]
h = np.sqrt(((np.sqrt(x1) - np.sqrt(X2))**2).sum(1)) / math.sqrt(2)
H1[i, i:P] = h
H = H1 + H1.T
return H
这超级慢。有没有更有效的方法来做到这一点?任何帮助深表感谢。