我有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
。
这里的问题是,您在二次时间内完成所有操作,因此首先将数组 dict
和 id
转换为字典,其中每个 单词
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/