Преобразование DistributedMatrix в Scipy разреженный или массив Numpy - PullRequest
0 голосов
/ 08 января 2019

Как мне преобразовать некоторые DistributedMatrix обратно в массив Numpy или в редкий массив Scipy?

Очевидно, что это не то, что я хочу делать с большим массивом, но это полезно для отладки и тестирования кода перед его запуском на действительно больших данных.

1 Ответ

0 голосов
/ 08 января 2019

Вот наивное преобразование из 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...