我有三个名单,即A,B,C 所有这些列表包含97510个项目。我需要像这样创建一个稀疏矩阵
matrix[A[0]][B[0]] = C[0]
例如,
A=[1,2,3,4,5]
B=[7,8,9,10,11]
C=[14,15,16,17,18]
我需要用
创建一个稀疏矩阵matrix[1][7] = 14 #(which is C[1])
matrix[2][8] = 15 #and so on ..
我试过,python给我一个错误,说“索引值必须是连续的”
我该怎么做?
答案 0 :(得分:8)
我建议您查看SciPy sparse matrices。例如。 COO稀疏矩阵:
matrix = sparse.coo_matrix((C,(A,B)),shape=(5,5))
注意:我刚刚接受了COO矩阵,因为它在示例you can take any other中。您可能必须尝试哪一个最适合您的情况。它们的数据压缩方式各不相同,这会对某些操作的性能产生影响。
答案 1 :(得分:4)
如果您只需要一种方法来获取矩阵[A [0]] [B [0]] = C [0],您可以使用以下内容:
A=[1,2,3,4,5]
B=[7,8,9,10,11]
C=[14,15,16,17,18]
matrix = dict((v,{B[i]:C[i]}) for i, v in enumerate(A))
EDITED(感谢gnibbler):
A = [1,2,3,4,5]
B = [7,8,9,10,11]
C = [14,15,16,17,18]
matrix = dict(((v, B[i]), C[i]) for i, v in enumerate(A))
答案 2 :(得分:2)
使用dict非常简单,特别是如果你愿意改变你稍微编写索引的方式
>>> A=[1,2,3,4,5]
>>> B=[7,8,9,10,11]
>>> C=[14,15,16,17,18]
>>> matrix=dict(((a,b),c) for a,b,c in zip(A,B,C))
>>> matrix[1,7]
14
>>> matrix[2,8]
15
>>>
答案 3 :(得分:0)
看看支持稀疏矩阵的numpy / scipy。参见例如here