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

Julia中如何编写匿名广播调用实现矩阵指定列加动态随机值

实现代码

符合所有约束要求的写法如下:

((x, col) -> col == 2 ? x + rand() : x + 1).(A, (axes(A, 2))')

逻辑说明

  1. axes(A, 2)会获取矩阵A的列索引范围1:3,转置为(axes(A, 2))'后变成1行3列的行向量,和2行3列的A做广播时,每一列的所有元素都会匹配到对应列的索引值。
  2. 匿名函数对每个传入的元素做判断:如果是第2列的元素,就加上一个新生成的随机数,其他列的元素统一加1,刚好满足第二列每个元素加不同随机数、其余列加1的需求。
  3. 完全符合你提出的三个约束:
    • 不会修改原矩阵A,只会返回新的计算结果,符合数据透明要求
    • 没有定义任何额外的辅助变量,运行前后环境里只有A存在
    • 直接使用匿名函数做广播调用,没有提前定义命名函数f

运行验证示例

假设你的A是示例中的矩阵:

julia> A = [0.705942 0.553562 0.731246; 0.205833 0.106978 0.131893]
2×3 Matrix{Float64}:
 0.705942  0.553562  0.731246
 0.205833  0.106978  0.131893

julia> ((x, col) -> col == 2 ? x + rand() : x + 1).(A, (axes(A, 2))')
2×3 Matrix{Float64}:
 1.70594  1.03015  1.73125
 1.20583  0.23479  1.13189

可以看到第二列两个元素分别加了不同的随机数,其余列都加了1,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:27:02