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

如何将CSV文件读取为第0索引存列名的numpy数组并设置表头Unicode长度为<U30

解决方法

你遇到的<U32不符合要求的问题是numpy自动推断字符串类型长度导致的,直接手动指定表头的Unicode长度为<U30即可,以下是两种可行方案:

方案1:基于pandas实现(改动最小,适配你现有逻辑)

import pandas as pd
import numpy as np

# 读取CSV文件
df = pd.read_csv("你的文件路径.csv")
# 强制将列名转为<U30类型,避免自动推断为<U32
headers = df.columns.values.astype("<U30")
# 提取数据部分
data = df.to_numpy()
# 拼接表头和数据,第0行即为列名
result_arr = np.vstack([headers.reshape(1, -1), data])

验证方式:执行print(result_arr.dtype)即可看到字符串部分类型为<U30,符合要求。

方案2:numpy原生读取(无需依赖pandas)

import numpy as np

# 先单独读取表头,指定dtype为<U30
with open("你的文件路径.csv", "r", encoding="utf-8") as f:
    headers = np.array(f.readline().strip().split(","), dtype="<U30")
# 读取后续数据,自动适配数值类型
data = np.genfromtxt("你的文件路径.csv", delimiter=",", skip_header=1, dtype=None, encoding="utf-8")
# 拼接得到最终数组
result_arr = np.vstack([headers.reshape(1, -1), data])

注意事项

  • 你提供的样格列名最长仅13个字符,远小于30,手动指定为<U30不会出现截断问题
  • 若后续修改列名,需确保单条列名长度不超过30,否则会被自动截断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:27:02