Julia: map 和广播有什么区别?

标签 julia

我在 Julia 用户组上找到了一些讨论,但它们对我来说太技术性了。

我想知道在两者之间进行选择的标准是什么。

我正在关注 JuliaBox 教程,但它并没有解释太多。谢谢

最佳答案

mapbroadcast在处理不同维度的多个集合时是不同的。而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/

相关文章:

function - Julia:通过 map() 函数将关键字参数传递给函数

linux - 如何在 ssh 集群中更新 Julia

recursion - 在 Julia 中理解没有基本情况的递归

types - 在 Julia 中,为什么在两个元素元组上使用 Pair?

parallel-processing - 并行映射和并行for循环之间的区别

julia - 如何用 Julia 中的 for 循环的结果填充向量?

Julia 带点的中间数组分配

在 Julia 中使用匿名函数的性能损失

file - 写入文件? Julia 语言

julia - 在 Julia 中将公式作为函数参数传递