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

Python将numpy数组写入CSV文件时如何添加列标题

可行实现方案

原代码的问题很明确:

  • 写入时给每个numpy数组额外套了一层列表,zip之后只生成1行内容,每个单元格存的是整个数组的字符串,根本没把数组元素逐行展开
  • 写数据之前没先写入列标题行

直接用下面的代码就能实现需求,列名可以按需调整:

import numpy as np
import csv 

A = np.array([[1,2,3],[4,5,6],[7,8,9]])
B = np.array([[11,12,13],[14,15,16],[17,18,19]])  # 对应pressure列
C = np.array([[21,22,23],[24,25,26],[27,28,29]])  # 对应velocity列
D = np.array([[31,32,33],[34,35,36],[37,38,39]])

# 先把多维数组展平成一维,才能逐行配对四个数组的对应元素
a_col = A.flatten()
b_col = B.flatten()
c_col = C.flatten()
d_col = D.flatten()

with open('Data.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    # 第一行写列标题
    writer.writerow(['A', 'pressure', 'velocity', 'D'])
    # 逐行写入数据
    writer.writerows(zip(a_col, b_col, c_col, d_col))

如果想写得更简洁,直接用numpy自带的保存方法就行,不用额外导入csv模块:

import numpy as np

A = np.array([[1,2,3],[4,5,6],[7,8,9]])
B = np.array([[11,12,13],[14,15,16],[17,18,19]])
C = np.array([[21,22,23],[24,25,26],[27,28,29]])
D = np.array([[31,32,33],[34,35,36],[37,38,39]])

# 按列拼接四个展平后的数组
data = np.column_stack([A.flat, B.flat, C.flat, D.flat])
np.savetxt(
    'Data.csv',
    data,
    delimiter=',',
    header='A,pressure,velocity,D',
    comments='', # 去掉numpy默认加在表头前的#号
    fmt='%d' # 按整数格式保存,避免出现小数
)

小提示:csv模块写入时打开文件加newline=''是官方推荐写法,可以避免Windows系统下生成的CSV出现多余空行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:45:31