use*_*855 6 python numpy scipy
我想从矩阵坐标和值列表中初始化稀疏矩阵(如果重要的话,用于scipy minimum_spanning_tree).
也就是说,我有:
coords - Nx2 array of coordinates to be set in matrix
values - Nx1 array of the values to set.
Run Code Online (Sandbox Code Playgroud)
我试图使用lil_matrix来创建这个数组
A = lil_matrix((N,N))
A[coords[:,0],coords[:,1]] = values
Run Code Online (Sandbox Code Playgroud)
这是无法忍受的缓慢.实际上,在数组上循环并将每个元素设置为一个更快.即:
for i in xrange(N):
A[coords[i,0],coords[i,1]] = values[i]
Run Code Online (Sandbox Code Playgroud)
这比上面稍快,但不多.因为数组太大,所以创建NxN数组,设置值然后转换为稀疏不是一种选择.
有更好的方法可以做到这一点,还是我坚持这是我的算法中最慢的部分?
LIL矩阵非常慢,因为它的构造算法需要二次时间.我不明白为什么SciPy文档仍然推荐它.
构建矩阵的最简单方法是使用COO(坐标)格式,它似乎完全符合您的输入数据:
A = coo_matrix((values, coords.T))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |