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

如何将4×4 Python数组按2×2区块拆分至独立数组?

拆分4×4数组为2×2区块集合

嘿,我完全懂你现在的状况——脑子卡壳的时候哪怕简单的逻辑都想不起来,别担心,拆分4×4数组为独立的2×2区块其实很容易,我给你两种实用的实现方式:

纯Python原生实现(无需额外库)

这种方法适合不想引入第三方库的场景,核心是通过遍历区块的起始索引来提取元素:

# 你的示例数组
original_array = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
result_blocks = []

# 遍历每个2×2区块的起始行索引(0和2)
for row_start in [0, 2]:
    # 遍历每个2×2区块的起始列索引(0和2)
    for col_start in [0, 2]:
        # 提取当前区块的四个元素并整理成列表
        current_block = [
            original_array[row_start][col_start],
            original_array[row_start][col_start+1],
            original_array[row_start+1][col_start],
            original_array[row_start+1][col_start+1]
        ]
        result_blocks.append(current_block)

print(result_blocks)
# 输出:[[1,2,5,6],[3,4,7,8],[9,10,13,14],[11,12,15,16]]

逻辑说明:

  • 4×4数组的2×2区块起始行只能是0和2,起始列同理;
  • 对每个起始点,我们取行起始和行起始+1的两行,列起始和列起始+1的两列,把这四个位置的元素组合成一个区块数组;
  • 如果后续要处理更大的偶数阶数组(比如6×6),可以把[0,2]改成range(0, len(original_array), 2),实现动态遍历起始索引。

使用NumPy的便捷实现(适合处理大规模数组)

如果你经常处理数组操作,NumPy能让这个过程更简洁高效:

import numpy as np

original_array = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])

# 拆分并重塑数组得到目标格式
blocks = original_array.reshape(2, 2, 2, 2).swapaxes(1, 2).reshape(4, 4)

# 转成Python列表(如果需要的话)
print(blocks.tolist())
# 输出:[[1,2,5,6],[3,4,7,8],[9,10,13,14],[11,12,15,16]]

逻辑说明:

  • reshape(2,2,2,2):把原4×4数组拆分成2×2个区块,每个区块是2×2的子数组;
  • swapaxes(1,2):调整维度顺序,让区块内的元素排列符合你的需求;
  • reshape(4,4):把每个2×2区块扁平化为一维数组,最终得到4个长度为4的数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:09