Julia:沿矩阵的特定轴向量化函数

bon*_*fab 5 vector vectorization julia

Julia 中沿特定轴向量化函数的最佳方法是什么?例如,对矩阵的所有行求和。可以用点表示法吗?

sum.(ones(4,4))
Run Code Online (Sandbox Code Playgroud)

没有产生期望的结果。

And*_*erg 6

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

\n
sum([1 2; 3 4], dims=2)\n2\xc3\x971 Matrix{Int64}:\n 3\n 7\n\n# or\nusing Statistics\n\nmean([1 2; 3 4], dims=1)\n1\xc3\x972 Matrix{Float64}:\n 2.0  3.0\n
Run Code Online (Sandbox Code Playgroud)\n


gin*_*kul 5

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

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

您可以在此处找到文档,也可以在 REPL 中键入后缀来?找到文档mapslices

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

julia> sum.(eachrow(ones(4, 4)))
4-element Vector{Float64}:
 4.0
 4.0
 4.0
 4.0
Run Code Online (Sandbox Code Playgroud)

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