如何将Numpy数组与固定字符串标签导出为指定格式CSV文件?
嘿,我来帮你搞定这个CSV导出的问题!你需要给结果加上固定值的Channel和Class列,其实用numpy或者pandas都能轻松实现,下面给你两种实用方案:
方案一:用Numpy直接实现
既然你已经在用numpy处理数组,我们可以先生成和你的freq数组长度一致的固定值列,再把所有列合并起来导出。需要注意混合类型(数字+字符串)的处理,具体代码如下:
import numpy as np def export_data_csv(freq, matrix, channel_val=1, class_label="your_target_class"): # 生成和freq同长度的固定值列 channel_col = np.full_like(freq, channel_val, dtype=int) # Channel设为整数,可按需修改类型 class_col = np.full_like(freq, class_label, dtype=str) # 合并四列数据 combined_data = np.column_stack((channel_col, freq, matrix, class_col)) # 导出CSV,指定表头和每列的格式 header = "Channel,Freq,FFT,Class" np.savetxt( "freq_amp.csv", combined_data, delimiter=",", header=header, fmt=["%d", "%f", "%f", "%s"], # 对应每列的格式 comments='' # 避免表头被自动加上# )
方案二:用Pandas实现(更推荐,适配你的原始数据来源)
既然你的原始数据来自Pandas DataFrame,用Pandas处理会更直观简洁,不需要纠结numpy的类型问题:
import pandas as pd import numpy as np def export_data_csv(freq, matrix, channel_val=1, class_label="your_target_class"): # 把(x,1)的numpy数组转成一维,再构建DataFrame df = pd.DataFrame({ "Freq": freq.flatten(), "FFT": matrix.flatten() }) # 直接添加固定值列 df["Channel"] = channel_val df["Class"] = class_label # 调整列的顺序为你需要的Channel→Freq→FFT→Class df = df[["Channel", "Freq", "FFT", "Class"]] # 导出CSV,去掉默认的索引列 df.to_csv("freq_amp.csv", index=False)
如果你的原始数据本来就是DataFrame,那更省事——直接在原DataFrame上添加Channel和Class列,再调用to_csv就行,完全不用转成numpy数组折腾~
内容的提问来源于stack exchange,提问作者Abdullah
相关产品推荐
相关产品推荐

