我最近一直处理numpy / scipy中的矩阵构造问题,我正试图找到解决以下问题的最佳解决方案。
我有一个函数,它返回元组,由矩阵行索引和相应的行组成。此时,我只需构造一个numpy矩阵,例如:
mat = np.zeros((n, n))
其中n是矩阵维度。我逐步循环遍历函数结果,并按以下方式将相应的行添加到此矩阵中:
mat[result_tuple[0],:] = result_tuple[1]
它工作得很好而且速度很快。问题是,这是非常耗费内存的。有没有办法用scipy.sparse模块有效地做到这一点?
我目前的尝试有效,但速度很慢:
for result_tuple in results:
col = range(0,n,1)
row = np.repeat(result_tuple[0],n)
val = result_tuple[1]
mat = mat + sp.csr_matrix((val, (row,col)), shape(n,n), dtype=float)
同样,结果元组由(行索引,行数据)组成。
非常感谢。