如何在Julia中更改矩阵?
你能帮帮我吗? 我有这个矩阵如何在Julia中更改矩阵?,julia,Julia,你能帮帮我吗? 我有这个矩阵 > rout 4×5 Array{Int64,2}: 0 1 4 0 2 0 3 0 1 2 0 2 4 0 3 0 1 4 2 3 该矩阵的每一行都有一些部分。例如,第一行有两个部分。第一节包括1,4,第二节包括2,最后一行有一节1,2,3,4。我想得到一个矩阵,其中每排座位的节数作为另一个矩阵的值(nrout[I,j])。 对于前rout矩阵,可以制作此nrout(nrout的列为1,2,3,4) 相反,1 inr
> rout
4×5 Array{Int64,2}:
0 1 4 0 2
0 3 0 1 2
0 2 4 0 3
0 1 4 2 3
该矩阵的每一行都有一些部分。例如,第一行有两个部分。第一节包括1,4,第二节包括2,最后一行有一节1,2,3,4。我想得到一个矩阵,其中每排座位的节数作为另一个矩阵的值(nrout[I,j]
)。
对于前rout
矩阵,可以制作此nrout
(nrout
的列为1,2,3,4)
相反,1 inrout
在nrot
中坐1个(第1节的编号)。相反,4将1(第1节的编号)放入nrout
。相反,2将2(第2节的编号)放入nrout
你能帮我看看这个矩阵是如何在茱莉亚制作的吗 我会使用循环来解决这个问题:
function getnrout(rout)
# assume we have at least one 0 in each row in column 1
nrout = zeros(Int, size(rout, 1), size(rout, 2) - 1)
for i in axes(rout, 1)
section = 0
for j in axes(rout, 2)
v = rout[i,j]
if v == 0
section += 1
else
nrout[i, v] = section
end
end
end
return nrout
end
我删除了“jump”标签,因为这并不是关于jump的(除非你解释清楚原因)。而且,我不清楚你在问什么;您能再解释一下
nrout
的其他行与rout
的关系吗?然后我们会有更多的例子。谢谢。Nods分别出现在nrout的rout{1,2,3,4}make列中。我非常感谢。但是当代码运行时。它有这个错误。我使用Int(Axis(rout,1)
来解决这个问题,但它不起作用。错误是MethodError:没有方法匹配start(::axisarray.Axis{:row,Base.OneTo{Int64})[0m最接近的候选对象是:start([91m::SimpleVector[39m])at essentials.jl:258 start([91m::Base.MethodList[39m)at reflection.jl:560 start([91m::ExponentialBackOff[39m)错误。jl:107
此外,使用AxisArray是因为Axis未知。这是问题吗?如果您没有Axis,您可能使用比Bogumił更旧的Julia版本。我认为它以前是索引
。是的。它现在起作用了。您能告诉我Julia的哪个版本更适合安装它吗没有bug?非常感谢。我建议使用Julia 1.1。当然,最好不要使用Julia 0.6或更早版本,因为它们没有维护。您也可以编写1:size(rout,2)
,而不是axes(rout,2)
——这在正常情况下是相同的(除非您使用的是带有非标准轴的矩阵)。
function getnrout(rout)
# assume we have at least one 0 in each row in column 1
nrout = zeros(Int, size(rout, 1), size(rout, 2) - 1)
for i in axes(rout, 1)
section = 0
for j in axes(rout, 2)
v = rout[i,j]
if v == 0
section += 1
else
nrout[i, v] = section
end
end
end
return nrout
end