You cannot sample every 10th row and column of a CSR matrix, not in Scipy 0.12 at least:
>>> import scipy.sparse as sps
>>> a = sps.rand(1000, 1000, format='csr')
>>> a[::10, ::10]
Traceback (most recent call last):
...
ValueError: slicing with step != 1 not supported
You can do it, though, by converting first to a LIL format matrix:
>>> a.tolil()[::10, ::10]
<100x100 sparse matrix of type '<type 'numpy.float64'>'
with 97 stored elements in LInked List format>
As you see, the shape is updated correctly. If you want a numpy array, not a sparse matrix, try:
>>> a.tolil()[::10, ::10].A
array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]])