Python中如何将字符串数组转换为float类型数组
字符串数组转浮点二维数组解决方案
你之前的代码无法生效的核心原因有三点:
- 每个字符串首尾带有
[、]非数字字符,直接调用float()会触发类型转换错误 - Python字符串是不可变对象,
strip()这类字符串方法不会修改原变量,操作返回值没有变量接收等于没执行 - 单个字符串内包含空格分隔的多个浮点数,不能直接对整个字符串调用
float(),需要拆分后逐个转换
方案1:纯Python实现(无第三方依赖)
逐行处理字符串,去掉方括号后按空格拆分,逐个转换为浮点数即可:
str_array = ['[0.25 0.2916666666666667]', '[0.5833333333333334 0.2916666666666667]', '[0.5555555555555555 0.3333333333333332]'] float_array = [] for item in str_array: # 移除首尾方括号,按任意空白字符拆分,逐个转float nums = [float(num_str) for num_str in item.strip("[]").split()] float_array.append(nums)
如果需要得到numpy格式的二维数组,直接在外层套np.array(float_array)即可。
方案2:Numpy高效实现(适合大批量数据处理)
如果本身基于numpy做数据处理,可以直接批量转换,运行效率更高:
import numpy as np str_array = ['[0.25 0.2916666666666667]', '[0.5833333333333334 0.2916666666666667]', '[0.5555555555555555 0.3333333333333332]'] float_array = np.array( [item.strip("[]").split() for item in str_array], dtype=np.float64 )
提示:
split()方法不传参数时,会自动识别任意长度的空格、换行、制表符作为分隔符,哪怕原始字符串里有多余空格、换行缩进也能正常拆分,不需要额外做空白字符清理。
内容的提问来源于stack exchange,提问作者Chelsea Zou
相关产品推荐
相关产品推荐

