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

如何无循环/单循环实现特定方式的NumPy数组重塑?

无循环重塑NumPy数组的解决方案

可以通过三步向量化操作完成转换,完全不需要循环,核心思路是先拆分原数组的行,再调整维度顺序,最后展平:

import numpy as np

# 原数组
arr = np.array([
    [1,2,6,3,2,5],
    [9,4,7,3,2,6],
    [8,4,6,3,2,6],
    [9,5,0,4,5,2],
    [0,5,2,6,4,2],
    [8,6,2,5,7,4]
])

# 步骤1:将每行拆分为3个长度为2的子块,形状变为(6, 3, 2)
reshaped = arr.reshape(6, 3, 2)
# 步骤2:调整维度顺序,将子块的维度移到最前面,形状变为(3, 6, 2)
transposed = reshaped.transpose(1, 0, 2)
# 步骤3:展平为目标形状(3, 12)
result = transposed.reshape(3, -1)

print(result)

输出结果与预期完全一致:

[[1 2 9 4 8 4 9 5 0 5 8 6]
 [6 3 7 3 6 3 0 4 2 6 2 5]
 [2 5 2 6 2 6 5 2 4 2 7 4]]

操作逻辑对应转换模式:

  1. reshape(6,3,2):把原数组每行的6个元素拆成3组(每组2个),对应你标注的[x11,x12]、[x13,x14]、[x15,x16]这类子块。
  2. transpose(1,0,2):将维度顺序从「原行→子块→子块元素」调整为「子块→原行→子块元素」,这样第一个维度就对应结果的3行,每个维度下包含所有原行的对应子块。
  3. reshape(3,-1):把每个子块维度下的(6,2)二维结构直接展平成12个元素的行,得到目标拼接效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:30:40