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

使用NumPy加载含字符串与数值的CSV文件报错,如何分离两类数据?

解决NumPy加载混合类型CSV的问题

没问题!你遇到的这个错误很常见——np.loadtxt() 默认会把所有数据当成数值类型解析,而你的CSV里第一列是字符串格式的城市名,自然就转不动啦。不过完全可以正常加载并分离字符串和数值数据,给你两种实用的方法:

方法一:用np.loadtxt指定结构化数据类型

你可以提前定义一个包含字符串和整数的结构化数据类型,告诉NumPy每列该怎么解析:

import numpy as np

# 假设你的CSV文件名为cities.csv,内容如下:
# Boston 122
# New York 152
# Michigan 158

# 定义结构化dtype:第一列是长度10的字符串,第二列是整数
data = np.loadtxt('cities.csv', dtype=[('city', 'U10'), ('population', int)])

# 轻松分离城市名和人口数据
cities = data['city']
populations = data['population']

print(cities)  # 输出:['Boston' 'New York' 'Michigan']
print(populations)  # 输出:[122 152 158]

方法二:用np.genfromtxt自动推断类型

np.genfromtxt比loadtxt更灵活,能自动识别每列的数据类型,处理混合类型数据更省心:

import numpy as np

# 如果你的CSV没有表头,就把names改成自定义的字段名,比如names=['city', 'population']
data = np.genfromtxt('cities.csv', dtype=None, names=True, encoding='utf-8')

# 按字段名提取数据
cities = data['city']
populations = data['population']

print(cities)
print(populations)

这里dtype=None让NumPy自动推断每列的类型,encoding='utf-8'是为了避免字符串编码相关的警告。

用这两种方法都能顺利解决你遇到的ValueError,完美分离字符串和数值数据~

内容的提问来源于stack exchange,提问作者איתי שולמן

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:04:44