我知道scipy.spatial.distance.pdist函数以及如何从结果矩阵/ndarray 计算平均值。
>>> x = np.random.rand(10000, 2)
>>> y = pdist(x, metric='euclidean')
>>> y.mean()
0.5214255824176626
在上面的示例中y
变得非常大(几乎是输入数组的 2,500 倍):
>>> y.shape
(49995000,)
>>> from sys import getsizeof
>>> getsizeof(x)
160112
>>> getsizeof(y)
399960096
>>> getsizeof(y) / getsizeof(x)
2498.0019986009793
但由于我只对平均成对距离感兴趣,因此不必将距离矩阵保存在内存中。相反,可以单独计算每行(或列)的平均值。然后可以从行平均值计算最终平均值。
是否已经存在利用此属性的功能,或者是否有一种简单的方法可以扩展/组合现有功能来做到这一点?