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

如何从多维NumPy数组生成多份合并CSV文件

解决方案

核心思路

用Pandas处理数据拼接与CSV导出更高效,核心步骤如下:

  • 将8个NumPy数组按周维度对应到指定列
  • 为每个建筑单独提取数据,添加周索引列
  • 计算非索引列的平均值并追加到数据末尾
  • 导出为符合要求的CSV文件

完整代码示例

import numpy as np
import pandas as pd

# 模拟用户的8个NumPy数组(示例:2个建筑,20周)
# 对应列:Opt_cost, Opt_neg, CC_cost, CC_neg, PSC_cost, PSC_neg, ANN_cost, ANN_neg
opt_cost = np.random.rand(2, 20) * 100
opt_neg = np.random.rand(2, 20) * 10
cc_cost = np.random.rand(2, 20) * 100
cc_neg = np.random.rand(2, 20) * 10
psc_cost = np.random.rand(2, 20) * 100
psc_neg = np.random.rand(2, 20) * 10
ann_cost = np.random.rand(2, 20) * 100
ann_neg = np.random.rand(2, 20) * 10

# 把数组和列名绑定,方便后续处理
data_dict = {
    "Opt_cost": opt_cost,
    "Opt_neg": opt_neg,
    "CC_cost": cc_cost,
    "CC_neg": cc_neg,
    "PSC_cost": psc_cost,
    "PSC_neg": psc_neg,
    "ANN_cost": ann_cost,
    "ANN_neg": ann_neg
}

num_buildings = opt_cost.shape[0]  # 获取建筑数量
num_weeks = opt_cost.shape[1]      # 获取周数

# 循环处理每个建筑
for building_idx in range(num_buildings):
    # 1. 提取当前建筑的所有周数据
    building_data = {}
    for col_name, arr in data_dict.items():
        building_data[col_name] = arr[building_idx, :]
    
    # 2. 添加周索引列(从1开始计数)
    building_data["Week (index)"] = np.arange(1, num_weeks + 1)
    
    # 3. 转换为DataFrame并调整列顺序,确保周索引在第一列
    df = pd.DataFrame(building_data)
    df = df[["Week (index)", "Opt_cost", "Opt_neg", "CC_cost", "CC_neg", 
             "PSC_cost", "PSC_neg", "ANN_cost", "ANN_neg"]]
    
    # 4. 计算平均值行:排除周索引列,求均值后保留一位小数
    avg_row = df.drop("Week (index)", axis=1).mean().round(1)
    avg_row["Week (index)"] = "Average"  # 周索引位置标注为Average
    # 把平均值行追加到原数据末尾
    df = pd.concat([df, pd.DataFrame([avg_row])], ignore_index=True)
    
    # 5. 导出CSV文件,文件名示例:building_1.csv、building_2.csv
    df.to_csv(f"building_{building_idx + 1}.csv", index=False)

关键细节说明

  • 数组对应:确保data_dict的键与CSV列名完全匹配,列顺序可通过DataFrame的列排序修正
  • 周索引:若需要从0开始计数,把np.arange(1, num_weeks + 1)改成np.arange(num_weeks)即可
  • 平均值处理:用drop排除周索引列后计算均值,round(1)保证保留一位小数,最后给周索引位置标注"Average"
  • 导出设置:index=False避免将DataFrame的默认索引写入CSV文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:41:01