在Julia中将LinRange转换为数组

3

我是Julia的新手,正在尝试将LinRange转换为数组以进行进一步的计算。例如,我有:

julia> x = LinRange(0, 1, 100) 

输出结果为:

100-element LinRange{Float64, Int64}: 0.0,0.010101,0.020202,0.030303,0.040404,0.0505051,0.0606061,0.0707071,0.0808081,0.0909091,0.10101,…,0.89899,0.909091,0.919192,0.929293,0.939394,0.949495,0.959596,0.969697,0.979798,0.989899,1.0

然后我使用以下方法将其转换为数组:

julia> x = [x]

输出结果:

1-element Vector{LinRange{Float64, Int64}}:  range(0.0, stop=1.0, length=100)

但是,当我尝试像普通数组一样访问它时

julia> x[1]

我有整个LinRange作为输出:

100-element LinRange{Float64, Int64}:  0.0,0.010101,0.020202,0.030303,0.040404,0.0505051,0.0606061,0.0707071,0.0808081,0.0909091,0.10101,…,0.89899,0.909091,0.919192,0.929293,0.939394,0.949495,0.959596,0.969697,0.979798,0.989899,1.0

如果我尝试访问第二个元素,会出现以下错误:

julia> x[2] 

错误:BoundsError:尝试访问索引[2]处的1个元素Vector{LinRange {Float64,Int64}}

我知道我应该“降一级”,但我该怎么做呢?例如尝试使用x [1,1]始终输出整个LinRange。


1
[x] 创建了一个“向量的向量”。换句话说,您创建了一个具有一个元素的向量,该元素是一个范围,您没有对原始范围进行任何转换。向下“一级”将是 x[1][1],而不是 x[1,1]。但是您确定需要首先转换范围吗? - DNF
1个回答

4

使用:

collect(x)

或者

vcat(x)

或者

[x;]

然而,问题在于为什么需要使用 Vector。除非需要进行变异操作,否则使用 LinRange 更高效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接