【发布时间】:2020-11-28 08:24:18
【问题描述】:
我正在尝试使用 julia 构建 cora citation network 的图形。 数据结构如下,
1 9 1
1 436 1
1 545 1
4 198 1
4 464 1
4 602 1
...
边是从第一行的节点 id 到第二行的节点 id 构造的。第三行是边的权重。在这个数据集中,所有边的权重都是 1。cora 有 2708 个节点,5429 条边。
我写了如下的 julia 代码,
function MatrixMarketRead(filename)
A = readdlm(filename)
A = A[4:end,1:3]
return sparse( round(Int64,A[:,1]), round(Int64,A[:,2]), convert(Array{Float64},A[:,3]))
end
dir = "dataset/"
ln = "cora.mtx"
A = MatrixMarketRead(string(dir,strip(ln)));
print(size(A))
结果是
(2708,2706)
这应该是 (2708, 2708) 的形状,但结果是这样的。我不确定为什么会这样。我该如何解决这个问题?
【问题讨论】:
-
也许可以考虑 LightGraphs.jl(可能与 MetaGraphs.jl 一起)。
-
但是代码应该是对的。您是否尝试过类似
maximum(A[:, 2])的方法来查看所有值是否真的存在?如果不是,你sparse不能神奇地推断出矩阵是二次的。但是你可以使用五参数构造函数。 -
@phipsgabler 感谢您的建议。从输出来看,这个数据集很可能在其行或列中没有所有节点 ID。但是五个参数构造函数是什么意思?
-
sparse(A[:, 1], A[:, 2], A[:, 3], 2708, 2708). -
哦,很确定,是的。那是真的古老的。
标签: julia