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

如何在np.savetxt中同时保存字符串与数值类型数据?

解决np.savetxt混合类型数据保存的TypeError问题

你遇到的错误是因为np.savetxt默认使用科学计数法格式(%.18e)保存数据,但你的列表包含字符串和整数,转换为numpy数组后 dtype 为字符串类型(<U32),和默认的数值格式不匹配,导致类型冲突。下面是两种可行的解决方法:

方法一:指定混合格式并调整数组维度

因为你的数据是单一行的混合类型(字符串+整数),需要做两个关键调整:

  1. 给fmt参数指定每个元素对应的格式:第一个元素用%s(字符串格式),后续四个整数用%d(整数格式)
  2. 将一维数组转为二维数组(一行多列),避免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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:45:40