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

Dyalog APL嵌套数组:无循环操作各子数组的同行/列元素

对嵌套数组的子数组统一行列执行标量运算(无循环)

在APL中,无需编写显式循环,利用**每个运算符¨**就能批量处理嵌套数组中的所有子数组,针对同一行/列执行标量乘、加等操作。

示例场景:给每个子数组的第2列元素乘2

首先定义你的示例数组:

A ← (4 3)(5 3)(3 3)⍴¨⊂⍳15

执行修改操作:

A ← {⍵[;2] ← 2×⍵[;2] ⋄ ⍵} ¨ A

代码解释

  • {⍵[;2] ← 2×⍵[;2] ⋄ ⍵}:匿名函数,接收单个子数组,将其第2列([;2]是列索引,APL为1-based)的元素乘2后赋值回原位置,最后返回修改后的子数组。
  • ¨ A:将上述匿名函数应用到A的每一个子数组上,实现批量处理。

执行后查看结果:

A
┌──────────┬──────────┬───────┐
│ 1  4  3│ 1  4  3│1 4 3│
│ 4 10  6│ 4 10  6│4 10 6│
│ 7 16  9│ 7 16  9│7 16 9│
│10 22 12│10 22 12│       │
│        │13 28 15│       │
└──────────┴──────────┴───────┘

扩展:对指定行执行操作

如果要给每个子数组的第3行元素乘2,只需调整索引为行维度:

A ← {⍵[3;] ← 2×⍵[3;] ⋄ ⍵} ¨ A

加法操作示例

若要给第2列元素加2,可利用布尔掩码实现更简洁的写法:

A ← (⊢ + (0 2 0)×(=2∘⍳⍴⍵)) ¨ A

这里(=2∘⍳⍴⍵)生成与子数组同形状的布尔数组,仅第2列为1,乘以标量2后与原数组相加,实现目标列的加法修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:52:37