python - 在Python中填充二维数组的有效方法

标签 python performance optimization scipy sparse-matrix

我有3个数组:长度为5000000的[“id”:“word”]对的数组“words”,长度为13000的唯一id的数组“ids”和唯一单词的数组“dict”(字典)长度为 500000。这是我的代码:

matrix = sparse.lil_matrix((len(ids), len(dict)))
for i in words:
    matrix[id.index(i['id']), dict.index(i['word'])] += 1.0

但是它运行得太慢了(我工作了15个小时还没有得到矩阵)。有什么想法可以优化我的代码吗?

最佳答案

首先不要将数组命名为 dict,它会令人困惑,并且隐藏了内置类型 dict

这里的问题是,您在二次时间内完成所有操作,因此首先将数组 dictid 转换为字典,其中每个 单词 code> 或 id 指向其索引。

matrix = sparse.lil_matrix((len(ids), len(dict)))
dict_from_dict = {word: ind for ind, word in enumerate(dict)}
dict_from_id = {id: ind for ind, id in enumerate(id)}
for i in words:
    matrix[dict_from_id[i['id']], dict_from_dict[i['word']] += 1.0

关于python - 在Python中填充二维数组的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30120568/

相关文章:

python - 在 python 中有没有办法删除列的一部分?

python - Python 中的应用程序配置文件

c++ - 精确求平方根

optimization - CNF 简化

c++ - 优化 .txt 文件创建速度

python - Pandas 使用格式化为表格的表格创建 Excel

Python GSpead 变化监听器?

MySQL InnoDB 插入很慢

JavaFX占用内存并不断增加?

javascript - Chrome的V8不会因为 "tagged-to-i: not a heap number"而优化功能