【发布时间】:2021-06-16 18:24:09
【问题描述】:
我使用Scipy dok_matrix 方法创建了一个稀疏矩阵,如下所示:
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]
其中data_list 是带有标记化文本的列表列表。
创建sparse_dtm 后,我想检索第一行的所有值。
从documentation 我知道我可以使用.getrow() 方法从行i 中获取所有元素。
但是,到目前为止,我无法检索存储在 csr_matrix 中的键/值:
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>
sparse_dtm 确实包含正确的信息:
print(sparse_dtm.getrow(0))
Output: (0, 21018) 6.0
(0, 76741) 3.0
(0, 14008) 1.0
(0, 54143) 2.0
(0, 11866) 1.0
...
如何从行 i 访问元素并检索其键和值?
【问题讨论】:
-
sparsedok格式是dict的子类,但csr不是。它的数据存储在 3 个数组中,分别称为data、indices和indptr。getrow返回一个新的csr矩阵,形状为 (1,n). Theprint` 显示索引和值,但不指示矩阵的存储方式。
标签: python-3.x dictionary scipy sparse-matrix