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`显示索引和值,但不表示矩阵的存储方式。