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

如何将形状为(3,4,2)的Numpy数组重塑为目标结构的2D数组

如何重塑Numpy数组为指定2D结构?

原始Numpy数组定义如下:

import numpy as np

a1 = [["a1", "a2"],
      ["a3", "a4"],
      ["a5", "a6"],
      ["a7", "a8"]]

b1 = [["b1", "b2"],
      ["b3", "b4"],
      ["b5", "b6"],
      ["b7","b8"]]

c1 = [["c1", "c2"],
      ["c3", "c4"],
      ["c5", "c6"],
      ["c7","c8"]]

arr = np.array([a1, b1, c1])
# arr.shape 输出 (3, 4, 2)

期望重塑后的2D数组结构为:

["a1","b1","c1"],
["a2","b2","c2"],
...,
["a8","b8","c8"]

以下是尝试过但不符合预期的方法:

  • 使用reshape((8,3)):
arr.reshape((8,3))
# 输出:
# array([['a1', 'a2', 'a3'],
#        ['a4', 'a5', 'a6'],
#        ['a7', 'a8', 'b1'],
#        ['b2', 'b3', 'b4'],
#        ['b5', 'b6', 'b7'],
#        ['b8', 'c1', 'c2'],
#        ['c3', 'c4', 'c5'],
#        ['c6', 'c7', 'c8']])
  • 使用arr.T.reshape(8,3):
arr.T.reshape(8,3)
# 输出:
# array([['a1', 'b1', 'c1'],
#        ['a3', 'b3', 'c3'],
#        ['a5', 'b5', 'c5'],
#        ['a7', 'b7', 'c7'],
#        ['a2', 'b2', 'c2'],
#        ['a4', 'b4', 'c4'],
#        ['a6', 'b6', 'c6'],
#        ['a8', 'b8', 'c8']])
  • 使用arr.ravel().reshape(8,3):
arr.ravel().reshape(8,3)
# 输出:
# array([['a1', 'a2', 'a3'],
#        ['a4', 'a5', 'a6'],
#        ['a7', 'a8', 'b1'],
#        ['b2', 'b3', 'b4'],
#        ['b5', 'b6', 'b7'],
#        ['b8', 'c1', 'c2'],
#        ['c3', 'c4', 'c5'],
#        ['c6', 'c7', 'c8']])

正确实现方法

可以通过调整数组的轴顺序,再进行重塑来实现:

# 先交换轴,将原来的(3,4,2)转为(4,2,3),再重塑为(8,3)
result = arr.transpose(1, 2, 0).reshape(8, 3)

或者使用moveaxis来调整轴:

result = np.moveaxis(arr, 0, -1).reshape(8, 3)

输出结果符合预期:

array([['a1', 'b1', 'c1'],
       ['a2', 'b2', 'c2'],
       ['a3', 'b3', 'c3'],
       ['a4', 'b4', 'c4'],
       ['a5', 'b5', 'c5'],
       ['a6', 'b6', 'c6'],
       ['a7', 'b7', 'c7'],
       ['a8', 'b8', 'c8']], dtype='<U2')

原理说明

原始数组的形状是(3,4,2),对应维度分别是组(a1/b1/c1)、行、列。我们需要把每个组中相同位置的元素放在同一行,所以首先要把组这个维度移到最后,变成(4,2,3),这样每个(2,3)的子数组就是对应行的所有元素,再把整个数组展平为(8,3)就得到了想要的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:06:20