julia - 使用 Julia 中的 Julia 广播根据它们的索引计算数组值
问题描述
我想计算一个数组,a[i,1] = (l*i)/k
其中 wherel
和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)
返回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)
因为它也适用于具有从零开始或其他类型索引的数组。
推荐阅读
- python - 按名称键在字典列表中组合字典
- indexing - 由于 write.lock 导致 Solr 无法创建核心
- r - 如何将向量列表中的一个向量顺序附加到数据帧列表中的一个数据帧
- apache-camel - APACHE Camel:异常处理器后中止路由
- node.js - 使用 NodeJS 更改麦克风声音
- uproot - 与 root_numpy 相比,uproot 中 TTreeMethods.array 的性能较慢
- function - 谷歌脚本:将列中的新值附加到另一个工作表
- c# - 具有外部身份提供者身份验证的 ASP.NET Core 3.1 和 Azure AD B2C - invalid_request
- c# - JArray 到 2D 数组
- c# - 如何在 .NET Core 3.1 中正确使用 SignalR 和 SQLTableDependency 和 Razor 页面?