我有一个scipy.sparse.csr.csr_matrix,它是TfidfVectorizer()类的输出。我知道我可以这种方式访问该矩阵的各个组件:
所以如果我在这里有这个矩阵:
tf_idf_matrix = vectorizer.fit_transform(lines)
我可以在这里访问各个组件:
tf_idf_matrix.data
tf_idf_matrix.indices
tf_idf_matrix.indptr
如何从Python中保存 - 这样我可以将其加载到MATLAB稀疏矩阵中?或者如何将其更改为密集数组,并将其保存为一个numpy.ndarray文本文件 - 这样我只需将其作为矩阵加载到MATLAB中即可。这个矩阵的大小不是很大 - 它(5000,68k)
请帮忙。感谢
答案 0 :(得分:1)
MATLAB稀疏构造函数:
S =稀疏(i,j,s,m,n,nzmax)使用向量i,j和s来生成m×by-n稀疏矩阵,使得S(i(k),j(k) )= s(k),其中空间分配给nzmax非零
与scipy稀疏相同(包括使用ij
添加值的步骤相同)。
csr_matrix((data,ij),[shape =(M,N)]) 其中data和ij满足关系a [ij [0,k],ij [1,k]] = data [k]
data
和ij
coo_matrix
格式的属性。首先,我建议转换tocoo
并将三个数组写入.mat
文件(scipy.io
)。
答案 1 :(得分:0)
假设你在matlab中有这些组件 那么
x = accumarray(indptr+1, ones(size(indptr)),[1,N]);
% N being the number of rows >= max indptr+1
colind = cumsum(x);
res = sparse(colind,indices,data);
应该这样做。
第一部分只是将indptr
向量转换为向量,以使每个索引与正确的列号匹配。
(注意indptr
可能有重复,这就是为什么需要准确的原因)