Python:如何使用Python存储稀疏矩阵?

2024-10-02 22:38:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中得到了一个使用稀疏矩阵的输出,我需要将这个稀疏矩阵存储在我的硬盘中,我该怎么做呢?如果我应该创建一个数据库,我应该怎么做?? 这是我的代码:

import nltk
import cPickle
import numpy
from scipy.sparse import lil_matrix
from nltk.corpus import wordnet as wn
from nltk.corpus import brown
f = open('spmatrix.pkl','wb')
def markov(L):
    count=0
    c=len(text1)
    for i in range(0,c-2):
        h=L.index(text1[i])
        k=L.index(text1[i+1])
        mat[h,k]=mat[h,k]+1//matrix
    cPickle.dump(mat,f,-1)



text = [w for g in brown.categories() for w in brown.words(categories=g)]
text1=text[1:500]
arr=set(text1)
arr=list(arr)
mat=lil_matrix((len(arr),len(arr)))
markov(arr)
f.close()

我需要将这个“mat”存储在一个文件中,并且应该使用坐标来访问矩阵的值。。

稀疏矩阵的结果如下:`稀疏矩阵的结果如下:

(173, 168) 2.0 (173, 169) 1.0 (173, 172) 1.0 (173, 237) 4.0 (174, 231) 1.0 (175, 141) 1.0 (176, 195) 1.0 

但当我把它存储到一个文件中并读取相同的内容时,我会得到这样的结果:

(0, 68) 1.0 (0, 77) 1.0 (0, 95) 1.0 (0, 100)    1.0 (0, 103)    1.0 (0, 110) 1.0 (0, 112)   2.0 (0, 132)    1.0 (0, 133)    2.0 (0, 139)    1.0 (0, 146)    2.0 (0, 156)    1.0 (0, 157)    1.0 (0, 185)    1.0

Tags: infromimportforlen矩阵corpusmatrix
3条回答

假设您有一个numpymatrixndarray,这是您的问题和标记暗示的,那么您可以使用一个^{}方法和^{}函数:

your_matrix.dump('output.mat')
another_matrix = numpy.load('output.mat')

注意:此答案是对现在提供代码的修订问题的响应。

不应在函数中调用cPickle.dump()。创建稀疏矩阵,然后将其内容转储到文件中。

尝试:

def markov(L):
   count=0
   c=len(text1)
   for i in range(0,c-2):
       h=L.index(text1[i])
       k=L.index(text1[i+1])
       mat[h,k]=mat[h,k]+1 #matrix


text = [w for g in brown.categories() for w in brown.words(categories=g)]
text1=text[1:500]
arr=set(text1)
arr=list(arr)
mat=lil_matrix((len(arr),len(arr)))
markov(arr)
f = open('spmatrix.pkl','wb')
cPickle.dump(mat,f,-1)
f.close()

pyTables是HDF5数据模型的Python接口,是非常流行的选择,并且与NumPy和SciPy很好地集成。pyTables允许您访问基于数据的数组的片段,而无需将整个数组加载回内存。

我对稀疏矩阵本身没有任何具体的经验,快速的Google搜索既没有证实也没有否认稀疏矩阵是受支持的。

相关问题 更多 >