我想从矩阵坐标和值的列表中初始化一个稀疏矩阵(如果重要的话,可以与 scipy minimum_spanning_tree 一起使用)。
也就是说,我有:
coords - Nx2 array of coordinates to be set in matrix
values - Nx1 array of the values to set.
我试图使用 lil_matrix 来创建这个数组
A = lil_matrix((N,N))
A[coords[:,0],coords[:,1]] = values
这是令人难以忍受的缓慢。实际上,循环遍历数组并一次将每个元素设置一个会更快。IE:
for i in xrange(N):
A[coords[i,0],coords[i,1]] = values[i]
这比上面的稍快,但不多。因为数组太大,创建一个 NxN 数组,设置值然后转换为稀疏不是一种选择。
有没有更好的方法来做到这一点,还是我坚持这是我算法中最慢的部分?