如何将三维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
相关产品推荐
相关产品推荐

