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

能否创建存储二维数组的Pandas DataFrame?多参数传感数据处理需求

如何用Pandas存储二维数组并批量处理传感器数据

当然可以实现,以下是两种符合你需求的方案,分别对应字典(和Perl数组哈希逻辑一致)和Pandas DataFrame的实现方式,你可以根据后续处理需求选择:

方案1:用字典存储(最接近Perl数组哈希)

直接将每个参数的二维数组作为值存入字典,键为参数名,这样可以直接迭代参数名获取对应数据:

import numpy as np

# 原始数据
accel = [[-0.7437,0.1118,-0.6367],
         [-0.7471,0.1162,-0.6338],
         [-0.7437,0.1216,-0.6255]]
angle =  [[169.4366,49.4714,56.9421],
         [169.3762,49.5374,56.8433],
         [169.2828,49.6582,56.7059]]
avelo = [[-0.5493,-0.9766,1.4038],
          [0,-1.4038,0.7935],
          [0.061,-1.0986,0.2441]]

# 转换为numpy数组(可选,提升数值处理效率)
sensor_dict = {
    'accel': np.array(accel),
    'angle': np.array(angle),
    'avelo': np.array(avelo)
}

# 迭代参数名批量处理
for param_name, param_data in sensor_dict.items():
    # 这里替换成你的图表处理逻辑,比如绘制x/y/z三轴曲线
    print(f"处理参数:{param_name}")
    print(f"x轴数据:{param_data[:, 0]}")
    print(f"y轴数据:{param_data[:, 1]}")
    print(f"z轴数据:{param_data[:, 2]}")

方案2:用Pandas DataFrame存储

如果你需要结合Pandas的数据分析功能(比如过滤、统计),可以将数据存入DataFrame,有两种组织方式:

方式A:按参数分组存储

每个列对应一个参数,列值为完整的二维数组,适合按参数批量处理:

import numpy as np
import pandas as pd

# 原始数据转换为numpy数组
accel_np = np.array(accel)
angle_np = np.array(angle)
avelo_np = np.array(avelo)

# 创建DataFrame
df = pd.DataFrame({
    'accel': [accel_np],
    'angle': [angle_np],
    'avelo': [avelo_np]
})

# 获取指定参数的二维数组
accel_data = df['accel'].iloc[0]
# 获取accel的x轴数据
accel_x = accel_data[:, 0]

# 迭代所有参数批量处理
for param_name in df.columns:
    param_data = df[param_name].iloc[0]
    # 执行你的图表处理逻辑
    print(f"处理参数:{param_name}")
    print(param_data)

方式B:按时间步展开存储

将每个参数的x/y/z分量拆分为单独列,适合逐时间点分析所有参数:

# 创建按时间步组织的DataFrame
df_timestep = pd.DataFrame({
    'accel_x': accel_np[:, 0],
    'accel_y': accel_np[:, 1],
    'accel_z': accel_np[:, 2],
    'angle_x': angle_np[:, 0],
    'angle_y': angle_np[:, 1],
    'angle_z': angle_np[:, 2],
    'avelo_x': avelo_np[:, 0],
    'avelo_y': avelo_np[:, 1],
    'avelo_z': avelo_np[:, 2]
})

# 获取accel的所有分量数据
accel_all = df_timestep[['accel_x', 'accel_y', 'accel_z']].values
# 批量处理某一类参数(比如所有加速度相关列)
accel_cols = [col for col in df_timestep.columns if col.startswith('accel')]
for col in accel_cols:
    col_data = df_timestep[col].values
    # 处理单轴数据
    print(f"处理轴:{col}")
    print(col_data)

总结

  • 如果仅需要按参数名迭代处理数据,字典方案最简单,和你熟悉的Perl数组哈希逻辑完全一致;
  • 如果需要后续用Pandas做数据分析,DataFrame方案更灵活,两种组织方式可根据场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:44:59