Julia:创建 SparseArrays

Julia: creating SparseArrays

我想创建一个稀疏数组,我在其中定义了一个规则来合并重复项。文档说我可以用 sparse(i,j,v,[m,n,combine]) 来做到这一点。我在下面的例子中尝试过,但没有成功。能给个建议吗?

i = [1,2,3,3];
j = [1,2,3,2];
v = [10.,11.,12.,13.];
full(sparse([i;j],[j;i],[v;v], [3,3,combine(a,b)=mean([a,b])]))
full(sparse([i;j],[j;i],[v;v], [3,3,mean]))
full(sparse([i;j],[j;i],[v;v], [3,3,-(a,b)]))
full(sparse([i;j],[j;i],[v;v], [3,3,-]))

文档字符串中的方括号表示这些是可选参数。写法是:

julia> full(sparse([i;j],[j;i],[v;v], 3,3,-))
3×3 Array{Int64,2}:
 0   0   0
 0   0  13
 0  13   0

您可以省略最后一个参数,然后将默认值合并为 +:

julia> full(sparse([i;j],[j;i],[v;v], 3,3))
3×3 Array{Int64,2}:
 20   0   0
  0  22  13
  0  13  24

您可以使用 methods(sparse) 检查函数接受的参数集。另外,如果你写 @edit sparse([i;j],[j;i],[v;v]) 你会去 sparse 的源代码并且可以准确地了解什么是被接受的。