求Julia中计算多维数组边际条件比例的函数(类R proportions)
在Julia中实现按指定维度计算数组比例的功能
在Julia里,你可以通过sum函数结合广播除法,轻松实现类似R中proportions()的功能,无需额外安装包。
基础用法示例
假设我们有一个二维数组:
arr = [1 2 3; 4 5 6]
按行(维度1)计算比例
每个元素除以所在行的总和:
arr ./ sum(arr, dims=1)
输出结果:
2×3 Matrix{Float64}: 0.2 0.266667 0.333333 0.8 0.733333 0.666667
按列(维度2)计算比例
每个元素除以所在列的总和:
arr ./ sum(arr, dims=2)
输出结果:
2×3 Matrix{Float64}: 0.166667 0.333333 0.5 0.266667 0.333333 0.4
封装成便捷函数
如果需要像R里那样直接调用proportions函数,可以自己封装一个:
function proportions(arr; dims::Int) return arr ./ sum(arr, dims=dims) end # 调用示例 proportions(arr, dims=1) # 按行计算比例 proportions(arr, dims=2) # 按列计算比例
高维数组支持
这个方法同样适用于更高维度的数组,只需要指定对应的维度编号即可。比如三维数组按第3维度计算比例:
arr_3d = rand(2, 2, 2) proportions(arr_3d, dims=3)
内容的提问来源于stack exchange,提问作者Mohammad
相关产品推荐
相关产品推荐

