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

如何将多组矩阵转换为pandas DataFrame并解决维度匹配报错

多时间点二维矩阵存入Pandas DataFrame的实现方案

报错原因

你传入pd.DataFrame()的参数是4个二维数组组成的列表,Pandas会将每个二维数组识别为单个元素,传入数据的实际结构为4行1列(每行对应1个完整矩阵),和你指定的4个列名的结构要求不匹配,因此触发Shape不匹配报错。

实现方案

方案1:单列存储完整矩阵(适合只需要整矩阵调用的场景)

将4个矩阵封装为单行的元素列表,对应4个列名,实现每列存储对应时间点的完整二维矩阵:

import pandas as pd
import numpy as np

# 示例矩阵定义
A0 = np.array([[1,2,3],[3,4,5]])
A1 = np.array([[0,2,0],[3,4,0]])
A2 = np.array([[1,0,3],[0,4,5]])
A3 = np.array([[1,2,0],[3,0,5]])

# 构造DataFrame
df = pd.DataFrame([[A0, A1, A2, A3]], columns=['day_0','day_1','day_2','day_3'])

调用示例:获取day_0对应的完整矩阵,执行df['day_0'].iloc[0]即可返回原A0数组。

方案2:打平矩阵存储为结构化数据(适合需要做数值运算、按位置取值的场景)

将每个二维矩阵打平为1维数组,用单独的列标记矩阵元素的行、列索引,既保留原矩阵的所有信息,也可以直接使用Pandas的数值计算方法:

m, n = A0.shape
# 生成矩阵元素对应的行、列索引(0基)
row_idx = np.repeat(np.arange(m), n)
col_idx = np.tile(np.arange(n), m)

# 构造结构化数据
df = pd.DataFrame({
    'row_idx': row_idx,
    'col_idx': col_idx,
    'day_0': A0.flatten(),
    'day_1': A1.flatten(),
    'day_2': A2.flatten(),
    'day_3': A3.flatten()
})

调用示例:

  • 取A0矩阵第0行第1列的数值:df.loc[(df['row_idx']==0) & (df['col_idx']==1), 'day_0'].values[0]
  • 恢复day_0对应的完整矩阵:df['day_0'].values.reshape(m, n)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 12:24:04