Python 3.x 从csr_矩阵访问元素

Python 3.x 从csr_矩阵访问元素,python-3.x,dictionary,scipy,sparse-matrix,Python 3.x,Dictionary,Scipy,Sparse Matrix,我使用Scipydok_矩阵方法创建了一个稀疏矩阵,如下所示: sparse_dtm = dok_matrix((num_documents, vocabulary_size), dtype=np.float32) for doc_index, document in enumerate(data_list): document_counter = Counter(document) for word in set(document): sparse_dtm[do

我使用
Scipy
dok_矩阵
方法创建了一个稀疏矩阵,如下所示:

sparse_dtm = dok_matrix((num_documents, vocabulary_size), dtype=np.float32)
for doc_index, document in enumerate(data_list):
    document_counter = Counter(document)
    for word in set(document):
        sparse_dtm[doc_index, word_index[word]] = document_counter[word]
word_to_index = dict()
index_to_word = dict()

for i, word in enumerate(vocabulary):
    word_to_index[word] = i
    index_to_word[i] = word
其中,
data\u list
是带有标记文本的列表列表

在创建了稀疏dtm之后,我想检索第一行的所有值

从中,我知道我可以使用
.getrow()
方法从行
I
获取所有元素

但是,到目前为止,我无法检索存储在
csr\u矩阵中的键/值

sparse_dtm.getrow(0).keys()
AttributeError: keys not found

sparse_dtm.getrow(0)[0]
<1x90140 sparse matrix of type '<class 'numpy.float32'>'
    with 576 stored elements in Compressed Sparse Row format>
如何从行
I
访问元素并检索其键和值?

获取值:

sparse_p_ij = dok_matrix((num_documents, vocabulary_size), dtype=np.float32)
row_zero = self.sparse_dtm.getrow(0).toarray()[0]
这提供了所有的值。要获取每个值的键,请获取非零值的索引:

indices = row_zero.nonzero()[0]
然后将这些值输入到
index\u to\u word
,我创建了以下内容:

sparse_dtm = dok_matrix((num_documents, vocabulary_size), dtype=np.float32)
for doc_index, document in enumerate(data_list):
    document_counter = Counter(document)
    for word in set(document):
        sparse_dtm[doc_index, word_index[word]] = document_counter[word]
word_to_index = dict()
index_to_word = dict()

for i, word in enumerate(vocabulary):
    word_to_index[word] = i
    index_to_word[i] = word

其中
词汇表
是语料库中所有单词的集合。

稀疏
dok
格式是
dict
的子类,但
csr
不是。它的数据存储在3个数组中,分别称为
data
index
indptr
getrow
返回一个新的
csr
矩阵,其形状为(1,n)
print`显示索引和值,但不表示矩阵的存储方式。