+1 vote

Best answer

Scipy and Numpy have a very elegant way of selecting some of the rows from a CSR matrix. You need to define a list of row numbers that you want to select and then use that list for the selection. Look at the following example:

x1 is the original CSR matrix and I selected rows 0,2, and 4. x2 is the new CSR matrix with only 3 rows (0,2,4).

>>> print (x1)

(0, 0) 1

(0, 2) 1

(1, 2) 1

(2, 0) 1

(2, 1) 1

(2, 2) 1

(3, 1) 1

(4, 0) 1

(4, 2) 1

>>> x1.toarray()

array([[1, 0, 1],

[0, 0, 1],

[1, 1, 1],

[0, 1, 0],

[1, 0, 1]])>>> idx=[0,2,4]

>>> x2=x1[idx,:]

>>> print(x2)

(0, 2) 1

(0, 0) 1

(1, 2) 1

(1, 1) 1

(1, 0) 1

(2, 2) 1

(2, 0) 1

>>> x2.toarray()

array([[1, 0, 1],

[1, 1, 1],

[1, 0, 1]], dtype=int64)

>>>