擅长:python、mysql、java
<p>为了扩展将<code>coo</code>矩阵转换为<code>csr</code>索引的过程,下面是一些小型稀疏矩阵的计时</p>
<p>制作矩阵</p>
<pre><code>In [158]: M=sparse.coo_matrix([[0,1,2,0,0],[0,0,0,1,0],[0,1,0,0,0]])
In [159]: timeit M[1,2]
TypeError: 'coo_matrix' object is not subscriptable
In [160]: timeit M.tocsc()[1,2]
1000 loops, best of 3: 375 µs per loop
In [161]: timeit M.tocsr()[1,2]
1000 loops, best of 3: 241 µs per loop
In [162]: timeit M.todok()[1,2]
10000 loops, best of 3: 65.8 µs per loop
In [163]: timeit M.tolil()[1,2]
1000 loops, best of 3: 270 µs per loop
</code></pre>
<p>显然,对于选择单个元素来说,<code>dok</code>是最快的(计算转换时间)。这种格式实际上是一个字典,当然可以快速访问元素。</p>
<p>但是,如果您经常访问整行或整列,或者在行或列上迭代,则需要更仔细地阅读文档,并且可能需要对典型的数组进行自己的时间测试。</p>
<p>如果您正在设置值,而不仅仅是读取它们,则计时甚至实现可能会有所不同。如果尝试更改<code>csr</code>或<code>csc</code>格式的<code>0</code>元素,则会收到效率警告。</p>