Загрузить разреженную числовую матрицу в R

#python #r #numpy #sparse-matrix

#python #r #numpy #разреженная матрица

Вопрос:

У меня есть разреженная матрица numPy, сохраненная в виде файла .npz, который я хочу загрузить в R. Это то, что я пробовал:

 library(reticulate)
np <- import("numpy")
npz_train <- np$load('netflix_matrix.npz')
df <- npz_train$f[["data"]]
 

Длина df равна 103327692, но для

 npz_train_imgs$f[["shape"]]
[1]   17770 2649429
 

это общий размер, отличный от 103327692.
Я знаю, что это разреженная матрица, так как я могу прочитать ее как единое целое?
Я бы хотел, чтобы NAs был в пробелах.

Спасибо!

Комментарии:

1. Посмотрите на код для save_npz или load_npz , чтобы увидеть, как сохраняется и загружается разреженная матрица. Детали различаются в зависимости от формата. Если это обычный csr формат, load используется: cls((loaded['data'], loaded['indices'], loaded['indptr']), shape=loaded['shape']) . Я считаю R , что имеет разреженный формат, но вам нужно будет изучить его документы, чтобы определить, как его можно использовать с такими атрибутами.

2. Это shape и data форма выглядят разумно для разреженной матрицы с разреженностью .002. data имеет ненулевые значения этого большого массива. То, что вы называете «пробелами», — это нули.

Ответ №1:

Я понял это:

 scipy <- import("scipy.sparse")
sparse_mat<- scipy$load_npz('netflix_matrix.npz')