Я использую разреженные матрицы с использованием CuPy. Если я определяю csc_matrix с помощью scipy, я могу назначить матрицу после ее определения. Но я не могу сделать это с CuPy. Ниже мой код:
data = np.ones((3,4))
diags = np.array([-1,0,1])
M= spdiags(data, diags, 4, 4)
M = sp.csc_matrix(M)
print(M[0,0])
M[0,0] = 5
print(M[0,0])
Я получаю 1,0, 5,0 в качестве вывода. Если я пытаюсь сделать то же самое в CuPy, я получаю ошибку.
import cupy as cp
import cupyx as cpx
datac = cp.ones((3,4))
diagsc = cp.array(diags)
Mc = cpx.scipy.sparse.spdiags(datac, diagsc, 4, 4)
Mc = cpx.scipy.sparse.csc_matrix(Mc)
Mc = cpx.scipy.sparse.csc_matrix(Mc)
print(Mc.get()[0,0])
Mc[0,0] = 5
print(Mc[0,0])
Я получаю 1,0 в качестве выхода, а затем ошибка: объект 'csc_matrix' не поддерживает назначение элемента.
Я делаю что-то неправильно?
Кроме того, операция назначения с csc_matrix в SciPy обходится дорого. Но я могу использовать lil_matrix в scipy, что намного быстрее. Есть ли у CuPy редкая опция lil_matirx?
Спасибо.