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

基于分组大小数组的update/reset函数调用序列生成需求

问题需求

背景定义

现有update()和reset()两个函数(称为"ID"),需按对应分组大小数组的定义,依次作用于data数组的连续行组。分组大小数组的定义示例如下:

import numpy as np

# 长度为5的data数组
data = np.array([1., 4., 3., 8., 9.], dtype='float64')

# update函数对应的分组大小数组
update_gs = np.array([1, 0, 2, 2], dtype='int64')
# 分组大小总和为5,对应data的行数,含义为:
# - 第1次update作用于第1行
# - 第2次update不作用于任何行
# - 第3次update作用于第2、3行
# - 第4次update作用于第4、5行

# reset函数对应的分组大小数组
reset_gs = np.array([2, 0, 0, 2, 1], dtype='int64')
# 分组大小总和为5,对应data的行数,含义为:
# - 第1次reset作用于前2行
# - 第2、3次reset不作用于任何行
# - 第4次reset作用于第3、4行
# - 第5次reset作用于最后一行

目标输出

需要生成两个一维数组:

  1. group_sizes(int类型):记录每次函数调用距上一次调用的已处理行数;
  2. function_ids(bool类型):标记当前调用为reset(True)或update(False)。

调用序列排序规则

  • 行组有重叠时,按行组最后一行的位置排序,最后一行越靠后,调用越晚;
  • 若行组最后一行相同,update调用优先在前。

示例预期输出

group_sizes = np.array([1, # 第1次操作是update,作用于data第1行
                        0, # 第2次update,无作用行
                        1, # 第1次reset,作用于data第2行
                        0, # 第2次reset,无作用行
                        0, # 第3次reset,无作用行
                        1, # 第3次update,距上次操作已处理1行
                        1, # 第4次reset,距上次操作已处理1行
                        1, # 第4次update,距上次操作已处理1行
                        0, # 最后一次reset,与前一次update的结束行相同
                       ], dtype='int64')
# 数组元素总和为5,对应data的总行数

function_ids = np.array([False, # 第1次操作是update
                         False, # 第2次操作是update
                         True,  # 第1次操作是reset
                         True,  # 第2次操作是reset
                         True,  # 第3次操作是reset
                         False, # 第3次操作是update
                         True,  # 第4次操作是reset
                         False, # 第4次操作是update
                         True,  # 最后一次操作是reset
                        ], dtype='bool')

设计思路说明

函数的执行逻辑依赖于上一次调用的函数类型及结果,最初尝试嵌套循环实现,但代码复杂度极高且难以维护,因此期望通过生成上述数组实现扁平化循环。

性能要求

data数组规模达数百万行,而update_gs和reset_gs仅数千行,为保障性能,需优先基于分组数组循环而非逐行遍历data。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:35:30