将Python dict转换为csr矩阵

时间:2016-03-11 17:11:30

标签: python matrix scipy

我使用下面的函数将表单(row,col):value的字典转换为csr矩阵。 row和col是int,value是float。

def convert(term_dict):
    # Create the appropriate format for the COO format.
    data = []
    row = []
    col = []
    for k, v in term_dict.items():
        r = int(k[0][1:])
        c = int(k[1][1:])
        data.append(v)
        row.append(r-1)
        col.append(c-1)
    # Create the COO-matrix
    coo = coo_matrix((data, (row, col)))
    # Let Scipy convert COO to CSR format and return
    return csr_matrix(coo)
来自here

。我得到了

  

r = int(k [0] [1:])TypeError:' int'对象没有属性   '的的GetItem '

1 个答案:

答案 0 :(得分:0)

真的不舒服你在这里尝试的东西:

for k, v in term_dict.items():
        r = int(k[0][1:])
        c = int(k[1][1:])

如果你有一个词典,比如说

d = dict()
d[(1,2)] = 2.3232
d[(2,2)] = 12.3232

for k, v in d.items():
  #here k is (1,2)
  #k[0] == 1
  #k[0][1:] == 1[1:] 

您正在尝试从int类型中切片。你的预期结果是什么?

for k, v in term_dict.items():
        r = int(k[0])
        c = int(k[1])

代替