我在 Julia 用户组上找到了一些讨论,但它们对我来说太技术性了。
我想知道在两者之间进行选择的标准是什么。
我正在关注 JuliaBox 教程,但它并没有解释太多。谢谢
最佳答案
map
和 broadcast
在处理不同维度的多个集合时是不同的。而broadcast
将尝试将所有对象转换到一个公共(public)维度 map
将直接按元素应用给定的函数。
julia> map(+, 1, [2,2,2])
1-element Array{Int64,1}:
3
julia> broadcast(+, 1, [2,2,2])
3-element Array{Int64,1}:
3
3
3
广播示例与
map(+, [1,1,1], [2,2,2])
的结果相同.还要注意
broadcast
的行为当未能找到两个参数之间的共同维度时:julia> broadcast(+, [1,2,3], [2 2; 2 0])
ERROR: DimensionMismatch("arrays could not be broadcast to a common size")
Stacktrace:
[1] _bcs1 at ./broadcast.jl:439 [inlined]
[2] _bcs at ./broadcast.jl:433 [inlined]
[3] broadcast_shape at ./broadcast.jl:427 [inlined]
[4] combine_axes at ./broadcast.jl:422 [inlined]
[5] instantiate at ./broadcast.jl:266 [inlined]
[6] materialize at ./broadcast.jl:748 [inlined]
[7] broadcast(::typeof(+), ::Array{Int64,1}, ::Array{Int64,2}) at ./broadcast.jl:702
[8] top-level scope at none:0
julia> map(+, [1,2,3], [2 2; 2 0])
3-element Array{Int64,1}:
3
4
关于Julia: map 和广播有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52892726/