擅长:python、mysql、java
<p>我认为可以构造一个空的<a href="http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.sparse.dok_matrix.html" rel="noreferrer">dok_matrix</a>并填充这些值。然后对其进行转置并将其转换为<a href="http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.sparse.csr_matrix.html" rel="noreferrer">csr_matrix</a>以实现有效的矩阵乘法。</p>
<pre><code>import numpy as np
import scipy.sparse as sp
d = {1: [51, 379, 552, 2333, 2335, 4089, 4484], 2: [51, 379, 552, 1674, 1688, 2333, 3650, 4089, 4296, 4484], 5: [783, 909, 1052, 1138, 1147, 2676], 7: [171, 321, 959], 9: [3193], 10: [959], 11: [131,567,897,923]}
mat = sp.dok_matrix((573000,16000), dtype=np.int8)
for user_id, movie_ids in d.items():
mat[user_id, movie_ids] = 1
mat = mat.transpose().tocsr()
print mat.shape
</code></pre>