擅长:python、mysql、java
<p>压缩矩阵的向量对应于平方矩阵的下三角区域。若要转换该三角形区域中的某个点,需要计算三角形中左侧的点数和列中上方的点数。</p>
<p>可以使用以下函数进行转换:</p>
<pre><code>q = lambda i,j,n: n*j - j*(j+1)/2 + i - 1 - j
</code></pre>
<p>检查:</p>
<pre><code>import numpy as np
from scipy.spatial.distance import pdist, squareform
x = np.random.uniform( size = 100 ).reshape( ( 50, 2 ) )
d = pdist( x )
ds = squareform( d )
for i in xrange( 1, 50 ):
for j in xrange( i ):
assert ds[ i, j ] == d[ q( i, j, 50 ) ]
</code></pre>