<p>你可以这样看:假设<code>x</code>是m乘n。一次选择两个<code>m</code>行的可能对是<code>itertools.combinations(range(m), 2)</code>,例如,对于<code>m=3</code>:</p>
<pre><code>>>> import itertools
>>> list(combinations(range(3),2))
[(0, 1), (0, 2), (1, 2)]
</code></pre>
<p>因此,如果<code>d = pdist(x)</code>,<code>combinations(range(m), 2))</code>中的第<code>k</code>元组给出与<code>d[k]</code>相关联的<code>x</code>行的索引。</p>
<p>示例:</p>
<pre><code>>>> x = array([[0,10],[10,10],[20,20]])
>>> pdist(x)
array([ 10. , 22.36067977, 14.14213562])
</code></pre>
<p>第一个元素是<code>dist(x[0], x[1])</code>,第二个是<code>dist(x[0], x[2])</code>,第三个是<code>dist(x[1], x[2])</code>。</p>
<p>或者可以将其视为平方距离矩阵的上三角部分中的元素,并串成一维数组。</p>
<p>例如</p>
<pre><code>>>> squareform(pdist(x))
array([[ 0. , 10. , 22.361],
[ 10. , 0. , 14.142],
[ 22.361, 14.142, 0. ]])
>>> y = array([[0,10],[10,10],[20,20],[10,0]])
>>> squareform(pdist(y))
array([[ 0. , 10. , 22.361, 14.142],
[ 10. , 0. , 14.142, 10. ],
[ 22.361, 14.142, 0. , 22.361],
[ 14.142, 10. , 22.361, 0. ]])
>>> pdist(y)
array([ 10. , 22.361, 14.142, 14.142, 10. , 22.361])
</code></pre>