gpt4 book ai didi

python - Scipy 从坐标列表快速初始化稀疏矩阵

转载 作者:太空狗 更新时间:2023-10-29 23:59:28 26 4
gpt4 key购买 nike

我想从矩阵坐标和值列表中初始化一个稀疏矩阵(如果重要的话,用于 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

慢得让人难以忍受。遍历数组并一次设置每个元素实际上更快。即:

for i in xrange(N):
A[coords[i,0],coords[i,1]] = values[i]

比上面的稍微快一点,但不多。由于数组太大,创建 NxN 数组、设置值然后转换为稀疏数组不是一种选择。

是否有更好的方法来做到这一点,或者我是否坚持这是我算法中最慢的部分?

最佳答案

LIL 矩阵非常慢,因为它的构造算法需要二次方时间。我不明白为什么 SciPy 文档仍然推荐它。

构建矩阵的最简单方法是使用 COO(坐标)格式,它似乎非常适合您的输入数据:

A = coo_matrix((values, coords.T))

关于python - Scipy 从坐标列表快速初始化稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18737657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com