我对 Julia 比较陌生,正在移植一些 C 函数来检查速度差异。我正在努力解决的一个问题是变量的范围。具体来说,有时 Julia 中的函数调用会覆盖局部变量,而有时不会。例如,这是一个计算最小生成树的函数:
function mst(my_X::Array{Float64})
n = size(my_X)[1]
N = zeros(Int16,n,n)
tree = []
lv = maximum(my_X)+1
my_X[diagind(my_X)] .=lv
indexi = 1
for ijk in 1:(n-1)
tree = vcat(tree, indexi)
m = minimum(my_X[:,tree],dims = 1)
a = zeros(Int64, length(tree))
print(tree)
for k in 1:length(tree)
a[k] = sortperm(my_X[:,tree[k]])[1,]
end
b = sortperm(vec(m))[1]
indexj = tree[b]
indexi = a[b]
N[indexi,indexj] = 1
N[indexj,indexi] = 1
for j in tree
my_X[indexi,j] = lv
my_X[j,indexi] = lv
end
end
return …Run Code Online (Sandbox Code Playgroud) 我有一个填充了离散元素的矩阵,我需要将它们聚类成完整的组.所以,举个例子,拿这个矩阵:
[A B B C A]
[A A B A A]
[A B B C C]
[A A A A A]
Run Code Online (Sandbox Code Playgroud)
A有两个独立的集群,C有两个独立的集群,B有一个集群.
我正在寻找的输出理想情况下会为每个clister分配一个唯一的ID,如下所示:
[1 2 2 3 4]
[1 1 2 4 4]
[1 2 2 5 5]
[1 1 1 1 1]
Run Code Online (Sandbox Code Playgroud)
现在我有一个R代码通过迭代检查最近邻居来递归地执行此操作,但是当矩阵变大(即100x100)时它会快速溢出.
R中是否有内置函数可以执行此操作?我查看了光栅和图像处理,但没有运气.我确信它必须在那里.
谢谢!
我正在尝试清理伪 json 文件的语法。该文件太大,无法在文本编辑器中打开(20 GB),因此我必须通过命令行(运行 Arch linux)来完成所有这些操作。我不知道该怎么做的一件事是替换 sed 中的换行符(GNU sed v. 4.8)
具体来说,我有以下形式的数据:
{
"id" : 1,
"value" : 2
}
{
"id" : 2,
"value" : 4
}
Run Code Online (Sandbox Code Playgroud)
我需要在闭花括号后面加一个逗号(但不是最后一个)。所以我希望输出看起来像:
{
"id" : 1,
"value" : 2
},
{
"id" : 2,
"value" : 4
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我只是在 中执行此操作sed,但从阅读到此内容,sed 首先将文本展平,因此不清楚如何替换换行符。理想情况下,我只是运行类似的东西sed 's/}\n{/},\n{/g' test.json,但这不起作用(使用 \\n 代替 \n 也不起作用)。
我也尝试过 awk,但遇到了类似的问题,无法替换硬回车与括号的组合。我可以用 tr 来替换硬回车,但不能用字符组合。
关于如何解决这个问题有什么想法吗?