如何在np.savetxt中同时保存字符串与数值类型数据?
解决np.savetxt混合类型数据保存的TypeError问题
你遇到的错误是因为np.savetxt默认使用科学计数法格式(%.18e)保存数据,但你的列表包含字符串和整数,转换为numpy数组后 dtype 为字符串类型(<U32),和默认的数值格式不匹配,导致类型冲突。下面是两种可行的解决方法:
方法一:指定混合格式并调整数组维度
因为你的数据是单一行的混合类型(字符串+整数),需要做两个关键调整:
- 给
fmt参数指定每个元素对应的格式:第一个元素用%s(字符串格式),后续四个整数用%d(整数格式) - 将一维数组转为二维数组(一行多列),避免
np.savetxt把每个元素单独存为一行
代码示例:
import numpy as np inputs = ["eos", 5, 60, 2000, 3] # 把一维数组转为二维数组(仅一行) inputs_arr = np.array(inputs)[None, :] # 指定混合格式,同时可通过comments=''取消header前默认的#符号 np.savetxt('inputs.txt', inputs_arr, delimiter=" ", header='Eos Pressure Radius Nt Sigma', fmt='%s %d %d %d %d', comments='')
方法二:用Python内置文件操作(更轻量)
如果数据量不大,直接用Python原生文件写入反而更直观,不需要依赖numpy:
inputs = ["eos", 5, 60, 2000, 3] header = 'Eos Pressure Radius Nt Sigma' with open('inputs.txt', 'w') as f: f.write(f"{header}\n") # 将所有元素转为字符串后用空格拼接写入 f.write(' '.join(map(str, inputs)) + '\n')
内容的提问来源于stack exchange,提问作者Ramos
相关产品推荐
相关产品推荐

