访问来自 csr_matrix 的元素
Access element from csr_matrix
我使用 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
:
中的 keys/values
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
中的元素并检索其键和值?
获取值:
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_to_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
其中 vocabulary
是语料库中所有单词的集合。
我使用 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
中的元素并检索其键和值?
获取值:
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_to_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
其中 vocabulary
是语料库中所有单词的集合。