【问题标题】:Julia: Vectorize function along a specific axis of a matrixJulia:沿矩阵的特定轴矢量化函数
【发布时间】:2022-01-08 22:03:09
【问题描述】:

在 Julia 中,沿特定轴对函数进行矢量化的最佳方法是什么?例如总结一个矩阵的所有行。点符号可以吗?

sum.(ones(4,4))

没有产生预期的结果。

【问题讨论】:

    标签: vector julia vectorization


    【解决方案1】:

    尝试在许多处理值集的函数上使用dims 参数。

    sum([1 2; 3 4], dims=2)
    2×1 Matrix{Int64}:
     3
     7
    
    # or
    using Statistics
    
    mean([1 2; 3 4], dims=1)
    1×2 Matrix{Float64}:
     2.0  3.0
    

    【讨论】:

      【解决方案2】:

      已经有一个名为mapslices 的标准函数,看起来正是您所需要的。

      julia> mapslices(sum, ones(4, 4), dims = 2)
      4-element Vector{Float64}:
       4.0
       4.0
       4.0
       4.0
      

      您可以找到文档 here 或在 REPL 中键入 ? 后跟 mapslices

      如果在您的示例中您想使用点表示法,您应该传递一个行数组,而不是数组本身。否则,sum 将应用于每个元素,从而产生相同的矩阵。可以分别使用eachroweachcol 来完成行和列。

      julia> sum.(eachrow(ones(4, 4)))
      4-element Vector{Float64}:
       4.0
       4.0
       4.0
       4.0
      

      编辑:我试图提出一个更通用的解决方案,但如果你有这个选项,我会建议使用安德烈的答案。

      【讨论】:

        猜你喜欢
        • 2021-12-12
        • 1970-01-01
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-18
        • 2022-12-12
        • 2020-03-09
        相关资源
        最近更新 更多