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

如何将字符串格式的Numpy数组转换为整数数组?

将字符串格式的NumPy数组转换为整数数组的方法

问题描述

给定如下字符串格式的NumPy数组:

import numpy as np
pattern = np.array([['[0, 0, 1, 0, 0]'],
       ['[0, 1, 1, 1, 1]'],
       ['[0, 1, 1, 1, 0]'],
       ['[0, 0, 1, 1, 1]'],
       ['[0, 0, 0, 1, 1]'],
       ['[0, 0, 1, 0, 1]'],
       ['[0, 0, 0, 0, 1]'],
       ['[1, 0, 1, 0, 0]'],
       ['[0, 1, 0, 1, 1]'],
       ['[0, 0, 1, 1, 0]'],
       ['[1, 1, 1, 1, 1]'],
       ['[1, 1, 1, 1, 0]']], dtype='<U15')

需要将其转换为纯整数类型的NumPy数组,无需手动逐个修改。

实现方法

这里提供几种高效的非手动实现方式:

方法1:利用ast.literal_eval解析字符串

借助Python标准库ast里的literal_eval函数安全解析字符串列表,结合NumPy向量化操作批量处理:

import numpy as np
from ast import literal_eval

# 降维处理原数组的单元素列表结构
flat_pattern = pattern.flatten()
# 批量解析每个字符串形式的列表
parsed = np.vectorize(literal_eval)(flat_pattern)
# 转换为整数数组
result = np.array(parsed, dtype=int)

方法2:字符串清洗+类型转换

直接对字符串做清洗,去除方括号后分割转整数:

import numpy as np

# 遍历每个元素,清洗字符串并转换为整数列表
result = np.array([list(map(int, s[0].strip('[]').split(','))) for s in pattern], dtype=int)

方法3:使用numpy.genfromtxt解析文本

把字符串数组当作文本数据源,利用genfromtxt的文本解析能力:

import numpy as np

# 将字符串整理成行文本,再用genfromtxt读取转换
text = '\n'.join([s[0].strip('[]') for s in pattern])
result = np.genfromtxt(np.core.defchararray.split(text, sep='\n'), delimiter=',', dtype=int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:40:58