Я использую sparse для создания, хранения и чтения большой разреженной матрицы.Я бы хотел использовать массивы Dask для использования его функций заблокированных алгоритмов.
Вот упрощенная версия того, что я пытаюсь сделать:
file_path = './{}'.format('myfile.npz')
if os.path.isfile(file_path):
# Load file with sparse matrix
X_sparse = sparse.load_npz(file_path)
else:
# All matrix elements are initially equal to 0
coords, data = [], []
X_sparse = sparse.COO(coords, data, shape=(88506, 1440000))
# Create file for later retrieval
sparse.save_npz(file_path, X_sparse)
# Create Dask array from matrix to allow usage of blocked algorithms
X = da.from_array(X_sparse, chunks='auto').map_blocks(sparse.COO)
return X
К сожалениюкод выше выдает следующую ошибку при попытке использовать compute()
с X
: Cannot convert a sparse array to dense automatically. To manually densify, use the todense method.
;но я не могу преобразовать разреженную матрицу в плотную память, так как это приведет к ошибке.
Есть идеи, как этого добиться?