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

如何将三维numpy数组转换为存储一维numpy数组的pandas DataFrame?

将三维NumPy数组转换为每个单元格含一维数组的Pandas DataFrame

方法1:利用数组切片直接构造DataFrame

通过遍历数组的第二个维度,将对应切片作为DataFrame的列,逻辑直观且高效:

import numpy as np
import pandas as pd

# 示例三维数组
arr = np.array([[[1., 1., 1., 1., 1.],
                 [0., 0., 0., 0., 0.],
                 [1., 2., 3., 4., 6.]],

                [[0., 0., 0., 0., 0.],
                 [11., 22., 33., 44., 66.],
                 [0., 0., 0., 0., 0.]]])

# 转换为目标DataFrame
df_arr = pd.DataFrame({
    f'col{i}': arr[:, i]
    for i in range(arr.shape[1])
})

print(df_arr)

输出结果:

col0                            col1                       col2
0  [1.0, 1.0, 1.0, 1.0, 1.0]       [0.0, 0.0, 0.0, 0.0, 0.0]  [1.0, 2.0, 3.0, 4.0, 6.0]
1  [0.0, 0.0, 0.0, 0.0, 0.0]  [11.0, 22.0, 33.0, 44.0, 66.0]  [0.0, 0.0, 0.0, 0.0, 0.0]

方法2:转换为object类型数组后构造

将三维数组转为object类型的二维数组(每个元素为一维数组),再直接传入DataFrame构造函数,代码更紧凑:

# 转换为object类型二维数组
arr_obj = arr.astype(object).reshape(arr.shape[0], arr.shape[1])

# 构造DataFrame并指定列名
df_arr = pd.DataFrame(arr_obj, columns=[f'col{i}' for i in range(arr.shape[1])])

说明

两种方法均依赖NumPy和Pandas原生操作,避免了低效的Python循环,可高效处理大规模数组:

  • 方法1通过切片提取列数据,逻辑清晰易理解;
  • 方法2利用类型转换和reshape一步到位,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:00:47