擅长:python、mysql、java
<p>我看不到一种降低时间复杂性的方法,但它可以矢量化:</p>
<pre><code>degrees = A.sum(axis=0)
weights = np.log10(1.0/degrees)
adamic_adar = (A*weights).dot(A.T)
</code></pre>
<p>使用<code>A</code>一个常规Numpy数组。似乎您使用的是<a href="http://graph-tool.skewed.de/static/doc/spectral.html#graph_tool.spectral.adjacency" rel="nofollow">^{<cd2>}</a>,因此{<cd1>}将是一个稀疏矩阵。在这种情况下,代码将是:</p>
^{pr2}$
<p>这比使用Python循环要快得多。不过,有一个小警告:使用这种方法,您确实需要确保主对角线上的值(即<code>A</code>和{<cd5>})是您期望的值。另外,<code>A</code>不能包含权重,只能包含0和1。在</p>