Python中文
首页
教程
问答
标签
搜索
登录
注册
scipy/numpy数组的字典式高效存储
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p><strong>背景</strong></p> <p>我正在处理的问题如下:</p> <ul> <li><p>在我为我的研究设计的一个实验中,我产生了大量的大数组(长度为4M),这些数组有点稀疏,因此可以存储为<code>scipy.sparse.lil_matrix</code>实例,也可以简单地存储为<code>scipy.array</code>实例(空间增益/损失不是这里的问题)。</p></li> <li><p>这些数组中的每一个都必须与一个字符串(即一个单词)配对,这样数据才有意义,因为它们是表示字符串含义的语义向量。<em>我需要保留这对。</em></p></li> <li><p>列表中每个单词的向量是一个接一个构建的,并存储在磁盘上,然后再转到下一个单词。</p></li> <li><p>它们必须以一种可以用字典式语法检索的方式存储到磁盘。例如,如果所有单词都存储在一个类似DB的文件中,我需要能够打开这个文件并执行类似<code>vector = wordDB[word]</code>的操作。</p></li> </ul> <p><strong>当前方法</strong></p> <p>我现在在做什么:</p> <ul> <li><p>使用<code>shelve</code>打开名为<code>wordDB</code></p></li> <li><p>每次构建单词的向量(当前使用<code>lil_matrix</code>来自<code>scipy.sparse</code>)时,将向量存储在工具架中:<code>wordDB[word] = vector</code></p></li> <li><p>当我需要在计算过程中使用向量时,我会做相反的操作:打开工具架,然后根据需要对每个单词执行<code>vector = wordDB[word]</code>来调用向量,这样就不需要将所有向量保存在RAM中(这是不可能的)。</p></li> </ul> <p>上面的“解决方案”符合我对解决问题的需求。问题很简单,当我希望使用这种方法来构建和存储大量单词的向量时,我只是耗尽了磁盘空间。在</p> <p>据我所知,这是因为<code>shelve</code>对正在存储的数据进行pickle处理,这不是存储大数组的有效方法,因此对于我需要处理的字数,<code>shelve</code>使这个存储问题变得棘手。在</p> <p><strong>问题</strong></p> <p>因此,问题是:有没有一种方法可以序列化我的数组集:</p> <ol> <li><p>以类似于<code>scipy.save</code>生成的<code>.npy</code>文件的压缩二进制格式保存数组本身?</p></li> <li><p>满足我的要求,即数据可以作为字典从磁盘读取,保持单词和数组之间的关联?</p></li> </ol>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我建议使用scipy.save.保存在单词和文件名之间要有一段措辞。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
3 回答
如何添加表示整数的擦边字符串?
5 回答
如何添加要在Bokeh中使用的新font.ttf文件?
5 回答
如何添加要显示的矩阵XY轴编号和XY轴
5 回答
如何添加计数?
6 回答
如何添加计数器函数?
6 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
9 回答
如何添加计数器来跟踪while循环中的月份和年份?
2 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
9 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
5 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
7 回答
如何添加评论拉梅尔亚姆
10 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
7 回答
如何添加谷歌地点自动完成到Flask?
5 回答
如何添加超时、python discord bot
4 回答
如何添加超过1dp的检查
7 回答
如何添加距离方法
4 回答
如何添加跟随游戏的敌人精灵
6 回答
如何添加路径以便python可以找到程序?
4 回答
如何添加身份验证/安全性以使用happybase访问HBase?
5 回答