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

如何使用numpy.genfromtxt正确读取含方括号的CSV文件?

解决numpy.genfromtxt读取带方括号数组的问题

问题根源分析

你遇到的问题有两个核心原因:

  1. 分隔符错误拆分字段:delimiter=','会把数组内部的逗号也当作字段分隔符,将[1,2,3,4,5]拆成[1、2、3、4、5]多个无效字段,导致usecols=(1,2,3,4,5)取到的是这些拆分后的字段,其中[1和5]无法转成整数,被填充为默认缺失值-1。
  2. deletechars参数误解:该参数仅用于删除表头列名中的指定字符,对数据部分的方括号完全无效。

解决方案

以下是几种可行的处理方式,按需选择:

方法1:结合Python内置csv模块读取(最可靠)

csv模块能正确识别被方括号包裹的字段,不会拆分内部逗号:

import csv
import numpy as np

with open('file_name.csv', 'r') as f:
    reader = csv.reader(f, delimiter=',')
    next(reader)  # 跳过表头行
    row = next(reader)  # 获取数据行
    
    # 处理array1:去掉方括号、分割字符串、转整数数组
    array1 = np.array(row[1].strip('[]').split(','), dtype=int)
    # 处理array2
    array2 = np.array(row[2].strip('[]').split(','), dtype=int)

print(array1)  # 输出:[1 2 3 4 5]
print(array2)  # 输出:[6 7 8 9 10]

方法2:用numpy读取字符串后手动处理

先将所有字段读取为字符串,再单独清理方括号并转换数组:

import numpy as np

# 读取为字符串类型,保留原始3个字段
data = np.genfromtxt('file_name.csv', skip_header=1, dtype='U', delimiter=',')

# 解析array1
array1 = np.array(data[0, 1].strip('[]').split(','), dtype=int)
# 解析array2
array2 = np.array(data[0, 2].strip('[]').split(','), dtype=int)

print(array1)

方法3:使用genfromtxt的converters参数自定义转换

通过转换器函数处理包含方括号的字段:

import numpy as np

def parse_array(s):
    # 将字节类型转为字符串,清理方括号后分割转整数
    s_str = s.decode('utf-8')
    return np.array(s_str.strip('[]').split(','), dtype=int)

# 直接读取并转换array1和array2列
arrays = np.genfromtxt('file_name.csv',
                       skip_header=1,
                       usecols=(1, 2),  # 取第2、3列(索引1、2)
                       converters={1: parse_array, 2: parse_array},
                       dtype=None)

array1, array2 = arrays
print(array1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:22:39