擅长:python、mysql、java
<p>根据评论中的额外信息,我认为让您感到困惑的是对<code>np.unique</code>的调用。尝试以下方法:</p>
<pre><code>import numpy as np
import scipy.sparse as sps
from numpy.core.umath_tests import inner1d
n = 100000
x = np.random.rand(n, 10)
theta = np.random.rand(n, 10)
rows = np.arange(n)
cols = np.arange(n)
np.random.shuffle(rows)
np.random.shuffle(cols)
def sparse_multiply(x, theta, rows, cols):
data = inner1d(x[rows], theta[cols])
return sps.coo_matrix((data, (rows, cols)),
shape=(x.shape[0], theta.shape[0]))
</code></pre>
<p>我得到以下时间安排:</p>
^{pr2}$
<p>当然,对于<code>n = 100</code>:</p>
<pre><code>>>> np.allclose(sparse_multiply(x, theta, rows, cols).toarray()[rows, cols],
x.dot(theta.T)[rows, cols])
>>> True
</code></pre>