【发布时间】:2019-05-02 17:56:23
【问题描述】:
我知道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
但由于我只对平均成对距离感兴趣,因此不必将距离矩阵保存在内存中。相反,可以单独计算每行(或列)的平均值。然后可以根据行平均值计算最终平均值。
是否已经有一个函数可以利用此属性,或者是否有一种简单的方法可以扩展/组合现有函数来做到这一点?
【问题讨论】:
-
你能举个例子说明一下吗?
-
@Mstaino 我编辑了这个问题。我希望现在很清楚。
-
指标
sqeuclidean代替euclidean可以吗? -
@Divakar
sqeuclidean也可以,但是如何减少内存消耗?
标签: python numpy scipy scipy-spatial