擅长:python、mysql、java
<p>我将<code>itertools.combinations</code>与差分向量的<code>np.linalg.norm</code>一起使用(这是欧几里德距离):</p>
<pre><code>import numpy as np
import itertools
a = np.array([[1,0,1,0],
[1,1,0,0],
[1,0,1,0],
[0,0,1,1]])
print([np.linalg.norm(x[0]-x[1]) for x in itertools.combinations(a, 2)])
</code></pre>
<p>为了理解,请从<a href="https://docs.python.org/3.4/library/itertools.html" rel="nofollow noreferrer">docs</a>:<br/>
<code>combinations('ABCD', 2)</code>给出<code>AB AC AD BC BD CD</code>。在你的例子中,<code>A</code>,<code>B</code>,<code>C</code>和<code>D</code>是矩阵的行<code>a</code>,所以上面代码中出现的<code>x[0]-x[1]</code>是<code>a</code>行中向量的差分向量。</p>