Недавно я пытался сделать следующее (эффективно)
Считать разреженную (csr) матрицу
Выбрать подмножествострок
Построить другую матрицу (все нули)
Заполнить 3. подмножеством, полученным в 2.
Я могу почти достигнуть этого следующим образом:
input_matrix = scipy.io.loadmat(some_matrix)
random_indices = np.random.choice(input_matrix.shape[1], num_samples, replace=False)
second_matrix = sp.dok_matrix(input_matrix.shape)
## this takes up too much memory!
second_matrix[random_indices] = input_matrix[random_indices]
Как сделать это более эффективно?Я не хотел бы вызывать .todense () в любой момент, так как это также взорвалось бы в памяти.Интуитивно понятно, что нужно уметь маскировать часть матрицы?В numpy (плотном) я бы просто заполнил остаток нулями, но для матриц csr я не уверен, так ли это.
Спасибо!