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

如何在APL中对scan算子做掩码以实现分段连续计数

APL 分段累加(遇0重置)实现方案

方法1:自定义扫描算子(最简洁)

你需要的是扫描过程中遇到0就重置累加值,直接自定义二元函数传入扫描算子即可:

N ← 0 0 0 1 1 1 0 0 1
      {⍵ × ⍺ + ⍵}\ N
0 0 0 1 2 3 0 0 1

运算逻辑:

  • 二元函数中⍺为上一步的累加结果,⍵为当前位置的原始值
  • 每次累加完成后乘以当前值⍵,如果当前值为0,累加结果直接重置为0,不会传递到后续区间

方法2:分组累加实现

如果偏好分组处理的思路,可以先生成分组ID再按组累加,完全保留原始位置信息:

idx ← ≠\N  ⍝ 数值变化时生成新的分组ID
      {+\⍵}⌸ idx,N  ⍝ 按ID分组累加
0 0 0 1 2 3 0 0 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:48:04