擅长:python、mysql、java
<p>当计算r=dot(C,Y)时,dot乘积会遇到内存问题,原因是numpy的dot函数不支持处理稀疏矩阵。现在发生的是numpy将稀疏矩阵C看作一个python对象,而不是numpy数组。如果你在小范围内检查,你可以直接看到问题:</p>
<pre><code>>>> from numpy import dot, array
>>> from scipy import sparse
>>> Y = array([[1,2],[3,4]])
>>> C = sparse.csr_matrix(array([[1,0], [0,2]]))
>>> dot(C,Y)
array([[ (0, 0) 1
(1, 1) 2, (0, 0) 2
(1, 1) 4],
[ (0, 0) 3
(1, 1) 6, (0, 0) 4
(1, 1) 8]], dtype=object)
</code></pre>
<p>很明显,以上不是你感兴趣的结果。相反,您要做的是使用scipy的sparse.csr_matrix.dot函数进行计算:</p>
<pre><code>r = sparse.csr_matrix.dot(C, Y)
</code></pre>
<p>或者更紧凑</p>
<pre><code>r = C.dot(Y)
</code></pre>