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

如何将三维NumPy数组转换为含3列的Pandas DataFrame

解决方案

方法一:NumPy数组重塑(高效适配大数据量)

你的原始数组形状为(10, 3, 5),要得到10×5=50行、3列的DataFrame,最直接高效的方式是通过NumPy调整轴顺序后重塑数组,全程是底层数值操作,性能拉满:

import numpy as np
import pandas as pd

# 生成示例数组
arr = np.random.randint(0, 100, (10, 3, 5))

# 调整轴顺序:将原数组的(样本数, 列数, 行展开数)转为(样本数, 行展开数, 列数)
# 再重塑为(50, 3)的二维数组
reshaped_arr = arr.transpose(0, 2, 1).reshape(-1, 3)

# 转换为DataFrame
df = pd.DataFrame(reshaped_arr, columns=['A', 'B', 'C'])

这种方法完全适配(10,3,50)这类更大维度的数据集,不需要循环或逐个索引处理,效率远高于拼接操作。

方法二:Pandas explode批量展开(代码更直观)

如果已经按你之前的方式生成了包含数组列的DataFrame,可以用apply结合explode批量展开所有列的元素,避免手动处理每个索引:

import numpy as np
import pandas as pd

arr = np.random.randint(0, 100, (10, 3, 5))

# 先生成包含数组列的DataFrame
df = pd.DataFrame(arr.tolist(), columns=['A','B','C'])

# 批量展开所有列的数组元素为单独行
df = df.apply(pd.Series.explode)

这个方法代码可读性更强,对于中等规模的数据足够高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:08:20