In [1]:
import numpy as np
from scipy.sparse import csr_matrix, csc_matrix, lil_matrix, dok_matrix

In [2]:
n = 1000

In [3]:
np.random.seed(0)
d = np.random.randint(1, n, n*10)
i = np.random.randint(0, n, n*10)
j = np.random.randint(0, n, n*10)

In [4]:
csr = csr_matrix((d, (i, j)), (n, n))
csc = csr.tocsc()
lil = csr.tolil()
dok = csr.todok()

In [5]:
%%timeit
csr.getrow(0)


54.4 µs ± 3.65 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [6]:
%%timeit
csc.getrow(0)


184 µs ± 14.7 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [7]:
%%timeit
lil.getrow(0)


18.8 µs ± 672 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [8]:
%%timeit
dok.getrow(0)


2.18 ms ± 85.1 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [9]:
%%timeit
csr[0]


75.3 µs ± 3.24 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [10]:
%%timeit
csc[0]


112 µs ± 5.41 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [11]:
%%timeit
lil[0]


41.8 µs ± 3.52 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [12]:
%%timeit
dok[0]


312 µs ± 4.88 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [13]:
%%timeit
csr.getcol(0)


83.2 µs ± 6.69 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [14]:
%%timeit
csc.getcol(0)


57.2 µs ± 1.66 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [15]:
%%timeit
lil.getcol(0)


2.77 ms ± 172 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [16]:
%%timeit
dok.getcol(0)


2.53 ms ± 340 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [17]:
%%timeit
csr[:, 0]


115 µs ± 2.47 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [18]:
%%timeit
csc[:, 0]


84.1 µs ± 5.81 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [19]:
%%timeit
lil[:, 0]


465 µs ± 12.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [20]:
%%timeit
dok[:, 0]


636 µs ± 34 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [21]:
%%timeit
csr[0, 0]


22.8 µs ± 1.12 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [22]:
%%timeit
csc[0, 0]


24.5 µs ± 1.68 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [23]:
%%timeit
lil[0, 0]


3.64 µs ± 57.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [24]:
%%timeit
dok[0, 0]


12.3 µs ± 568 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [25]:
%%timeit
csr[:10]


75.2 µs ± 2.23 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [26]:
%%timeit
csc[:10]


118 µs ± 6.03 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [27]:
%%timeit
lil[:10]


54.3 µs ± 5.2 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [28]:
%%timeit
dok[:10]


5.05 ms ± 440 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [29]:
%%timeit
csr[:, :10]


117 µs ± 15 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [30]:
%%timeit
csc[:, :10]


91.4 µs ± 10.3 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [31]:
%%timeit
lil[:, :10]


481 µs ± 37.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [32]:
%%timeit
dok[:, :10]


9.12 ms ± 257 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [33]:
%%timeit
csr[:10, :10]


80.4 µs ± 5.21 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [34]:
%%timeit
csc[:10, :10]


75.5 µs ± 2.46 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [35]:
%%timeit
lil[:10, :10]


47.6 µs ± 2.13 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [36]:
%%timeit
dok[:10, :10]


70.5 µs ± 4.92 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)