美文网首页
julia 矢量化计算的管道符号与聚合函数搭配时的注意事项

julia 矢量化计算的管道符号与聚合函数搭配时的注意事项

作者: 昵称违法 | 来源:发表于2020-03-12 21:49 被阅读0次
# 使用函数式管道运算符时,矢量化计算与聚合函数搭配时的注意事项【举例】

A = [1,2,3]
f(x) = @. 2x + 1  #【@.】自动矢量化的宏
sum(f(A))         #计算结果 = 15

# =============使用管道运算符=============注意中间的括号和begin/let  end 
#为方便观察,中间排版增加了空格

[1,2,3].|>     x -> 2x + 1               |> sum    # 结果=[3,5,7] 【错误】    我当时的最初写法,结果发现计算错误
[1,2,3].|>    (x -> 2x + 1)              |>sum     #结果 = 15   【正确】 
[1,2,3] |>  items->  items .|> x-> 2x+1  |> sum    # 结果=[3,5,7] 【错误】
[1,2,3] |>  items-> (items .|> x-> 2x+1) |> sum    # 结果=15      【正确】
[1,2,3] |> (items->  items .|> x-> 2x+1) |> sum    # 结果=15      【正确】
[1,2,3] |>     x -> 2x .+ 1              |> sum    # 结果=15      【正确】    直观度 *   1星
[1,2,3] |>  @. x -> 2x  + 1              |> sum    # 结果=[3,5,7] 【错误】
[1,2,3] |> (@. x -> 2x  + 1)             |> sum    # 结果=15      【正确】    直观度 **  2星
begin [1,2,3] |> @. x -> 2x  + 1 end     |> sum    # 结果=15      【正确】   
let ; [1,2,3] |> @. x -> 2x  + 1 end     |> sum    # 结果=15      【正确】

#列表推导
[2x+1 for x in [1,2,3]] |> sum |> println  #15
println(sum([2x+1 for x in [1,2,3]])         #15

# ****前面的矢量计算管道,处理不慎会对后面的计算产生分支****
#****需要看julia编译前的词法分析,怎么处理这个语法,才能避坑****

相关文章

网友评论

      本文标题:julia 矢量化计算的管道符号与聚合函数搭配时的注意事项

      本文链接:https://www.haomeiwen.com/subject/lwrgjhtx.html