You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia如何沿矩阵特定轴向量化执行函数?可否通过点语法实现?

Julia 沿指定维度操作矩阵的实现方法

你写的sum.(ones(4,4))没有得到预期结果,是因为点语法是Julia的广播机制,作用是把函数逐个应用到数组的每一个独立元素上,上述代码等价于对4×4矩阵里的每个1单独执行求和操作,最终输出还是4×4的全1矩阵,和按行/列聚合的需求不符。

内置聚合函数的最优实现

Julia所有内置的统计聚合函数(包括sum、mean、maximum、std等)都原生支持dims关键字参数,直接指定操作维度即可,这是性能最优的实现方式,底层做了高度向量化优化:

  • 按行求和(对每行的所有列元素聚合,保留维度结构):
    sum(ones(4,4), dims=2)
    # 输出为4×1矩阵,每个元素对应原矩阵一行的求和结果
    
  • 按列求和(对每列的所有行元素聚合,保留维度结构):
    sum(ones(4,4), dims=1)
    # 输出为1×4矩阵,每个元素对应原矩阵一列的求和结果
    

如果不需要保留聚合后的维度,想要输出一维向量,可以搭配dropdims方法消去冗余维度:

# 按行求和后输出长度为4的一维向量
dropdims(sum(ones(4,4), dims=2), dims=2)

自定义函数沿指定维度应用的通用方法

如果需要应用自定义函数而非内置聚合函数,可以用eachslice方法按指定维度切分矩阵得到切片迭代器,再搭配广播或者map执行函数,编译后性能和手写循环一致:

# 自定义函数示例:计算每行的最大值减最小值
f(row) = maximum(row) - minimum(row)
# 对所有行应用函数,输出长度为4的一维向量
f.(eachslice(ones(4,4), dims=1))

内容的提问来源于stack exchange,提问作者bonfab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:45:03