Julia:沿矩阵的特定轴向量化函数
Julia: Vectorize function along a specific axis of a matrix
在 Julia 中沿特定轴向量化函数的最佳方法是什么?例如总结一个矩阵的所有行。可以用点符号吗?
sum.(ones(4,4))
没有产生预期的结果。
尝试在许多处理值集的函数上使用 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
已经有一个名为 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
应用于每个元素,产生相同的矩阵。可以分别对行和列使用 eachrow
和 eachcol
来完成。
julia> sum.(eachrow(ones(4, 4)))
4-element Vector{Float64}:
4.0
4.0
4.0
4.0
编辑:我试图提出一个更通用的解决方案,但如果你有这个选项,我会推荐使用安德烈的答案。
在 Julia 中沿特定轴向量化函数的最佳方法是什么?例如总结一个矩阵的所有行。可以用点符号吗?
sum.(ones(4,4))
没有产生预期的结果。
尝试在许多处理值集的函数上使用 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
已经有一个名为 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
应用于每个元素,产生相同的矩阵。可以分别对行和列使用 eachrow
和 eachcol
来完成。
julia> sum.(eachrow(ones(4, 4)))
4-element Vector{Float64}:
4.0
4.0
4.0
4.0
编辑:我试图提出一个更通用的解决方案,但如果你有这个选项,我会推荐使用安德烈的答案。