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

如何将numpy rec.array转换为指定格式的Pandas DataFrame?

解决numpy rec.array转Pandas DataFrame列数异常的问题

直接用pd.DataFrame(my_list)会把rec.array里的嵌套数组逐个展开成独立列,这就是你得到90多列的核心原因——每个单元素/多元素数组都被拆成了单独列,而非合并成你需要的5列结构。

给你两种靠谱的处理方案:


方法一:直接提取字段合并(效率优先)

这种方式利用numpy的数组原生操作,适合大数据量场景:

import numpy as np
import pandas as pd

# 如果你传入的是多个rec.array组成的列表,先合并成一个完整的rec.array
combined_rec = np.concatenate(my_list)

# 提取weights字段并扁平化(把每个单元素数组转成标量)
weights = combined_rec['weights'].flatten()

# 提取integration字段,它本身就是(32,4)的二维数组结构
integration_cols = combined_rec['integration']

# 合并数据并指定列名
df = pd.DataFrame(
    np.column_stack([weights, integration_cols]),
    columns=['Weights', 'v_1', 'v_2', 'v_3', 'v_4']
)

方法二:逐行拆解(直观易懂)

如果数据量不大,这种方式逻辑更清晰,容易调试:

import numpy as np
import pandas as pd

# 先合并多个rec.array(如果是列表形式的话)
combined_rec = np.concatenate(my_list)

# 逐行拆解rec.array的字段,构造目标DataFrame
df = pd.DataFrame([
    {
        'Weights': row['weights'][0],
        'v_1': row['integration'][0],
        'v_2': row['integration'][1],
        'v_3': row['integration'][2],
        'v_4': row['integration'][3]
    }
    for row in combined_rec
])

两种方法都能生成你需要的32行5列DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:09:24