Вот наивное преобразование из IndexedRowMatrix
в разреженную матрицу Сципи:
from scipy.sparse import lil_matrix
def indexedrowmatrix_to_array(x):
output = lil_matrix((x.numRows(), x.numCols())
for indexed_row in x.rows.collect():
output[indexed_row.index] = indexed_row.vector
return output
и для CoordinateMatrix
:
from scipy.sparse import coo_matrix
def coordinatematrix_to_array(x):
output = coo_matrix((x.numRows(), x.numCols())
for matrix_entry in x.entries.collect():
output[matrix_entry.i, matrix_entry.j] = matrix_entry.value
return output
Вы могли бы сделать что-то подобное для BlockMatrix
, перебирая атрибут blocks
и назначая куски, используя атрибуты rowsPerBlock
и colsPerBlock
.