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

如何按指定块大小拼接2D数组并处理末尾元素左侧补零

实现方案

核心逻辑梳理

我们先从示例反推明确处理规则:

  1. 将原始2D数组的行按顺序每block_size行分为一组,最后不足block_size的单独作为一组
  2. 每组内部先反转行的顺序
  3. 若组内行数不足block_size,在组的左侧补对应数量的全零行(长度和原始行一致)
  4. 把每组内的所有行横向拼接为一个新行,所有新行按原始组的顺序排列就是最终结果

Python 实现代码

def block_concat(array_2d, block_size):
    if not array_2d or block_size <= 0:
        return []
    row_len = len(array_2d[0])
    # 按顺序分组
    groups = [array_2d[i:i+block_size] for i in range(0, len(array_2d), block_size)]
    result = []
    for group in groups:
        # 组内反转
        reversed_group = group[::-1]
        # 左侧补零
        pad_count = block_size - len(reversed_group)
        padded = [[0]*row_len for _ in range(pad_count)] + reversed_group
        # 横向拼接
        new_row = []
        for r in padded:
            new_row.extend(r)
        result.append(new_row)
    return result

# 测试用例
array_2d = [
[0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,1],
[0,0,0,0,0,1,1,1],
[0,0,0,0,0,0,1,1],
[0,0,0,0,0,1,1,1]
]
print(block_concat(array_2d, 2))

运行验证

运行上述代码输出结果和示例完全一致:

[
[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:57:02