在 julia 中使用 Julia Broadcasting 根据索引计算数组值
Computing array values based on their index using Julia Broadcasting in julia
我想计算一个数组,使得 a[i,1] = (l*i)/k
其中 l
和 k
是常量标量值,i
是行号。 明显的解决方案是遍历所有 i
值并添加值,但我想使用 Julia Broadcasting 关于这个,我找不到任何关于这个的文档。
编辑:a
是一个二维零数组。
正在初始化:
jl> a = zeros(5, 2);
jl> k, l = 3, 2π;
您在这里有多种选择。对于普通数组,这将起作用:
jl> a[:, 1] .= l .* (1:size(a, 1)) ./ k
5-element view(::Matrix{Float64}, :, 1) with eltype Float64:
2.0943951023931953
4.1887902047863905
6.283185307179586
8.377580409572783
10.471975511965978
这个比较笼统,在我看来实际上更可取:
jl> a[:, 1] .= l .* axes(a, 1) ./ k
有关 axes(a, n)
的更多上下文,这是获取数组的任何(或所有)维度的索引的通用方法。 axes(a, 1)
returns Base.OneTo(5)
,如果你 collect
它(不要那样做,顺便说一句)是
jl> collect(axes(a, 1))
5-element Vector{Int64}:
1
2
3
4
5
如果没有维度参数,您将获得所有维度,在本例中为两个维度:
jl> axes(a)
(Base.OneTo(5), Base.OneTo(2))
axes
优于 1:size(a, 1)
,因为它也适用于具有从零开始或其他类型索引的数组。
我想计算一个数组,使得 a[i,1] = (l*i)/k
其中 l
和 k
是常量标量值,i
是行号。 明显的解决方案是遍历所有 i
值并添加值,但我想使用 Julia Broadcasting 关于这个,我找不到任何关于这个的文档。
编辑:a
是一个二维零数组。
正在初始化:
jl> a = zeros(5, 2);
jl> k, l = 3, 2π;
您在这里有多种选择。对于普通数组,这将起作用:
jl> a[:, 1] .= l .* (1:size(a, 1)) ./ k
5-element view(::Matrix{Float64}, :, 1) with eltype Float64:
2.0943951023931953
4.1887902047863905
6.283185307179586
8.377580409572783
10.471975511965978
这个比较笼统,在我看来实际上更可取:
jl> a[:, 1] .= l .* axes(a, 1) ./ k
有关 axes(a, n)
的更多上下文,这是获取数组的任何(或所有)维度的索引的通用方法。 axes(a, 1)
returns Base.OneTo(5)
,如果你 collect
它(不要那样做,顺便说一句)是
jl> collect(axes(a, 1))
5-element Vector{Int64}:
1
2
3
4
5
如果没有维度参数,您将获得所有维度,在本例中为两个维度:
jl> axes(a)
(Base.OneTo(5), Base.OneTo(2))
axes
优于 1:size(a, 1)
,因为它也适用于具有从零开始或其他类型索引的数组。