如何将Python中字符串形式的数组转换为numpy.ndarray?
解决方案
这问题我之前处理类似特征编码数据时也碰到过,直接按以下步骤就能轻松搞定:
步骤1:先定义你的输入数据
首先我们把你的原始输入数据明确下来,方便后续测试:
import numpy as np # 你的原始输入元组 input_data = ('single image encodings************', '[-0.0810571 0.07765304 -0.01207364 -0.07887193 -0.10862262 0.00894677\n 0.02332557 -0.13491267 0.17760251 -0.05169698 0.14168473 -0.02124487\n ...]\n')
步骤2:清理字符串并转换为numpy数组
这里提供两种转换方式,你可以根据数据来源的安全性选择:
方法一:用eval快速转换(适合数据来源可信的场景)
这种方法最直接,清理掉多余字符后直接解析:
# 提取元组里的数组字符串部分 arr_str = input_data[1] # 清理换行符和末尾的省略号,得到干净的数组格式字符串 cleaned_str = arr_str.replace('\n', '').replace(' ...', '') # 转换成numpy数组 result_arr = np.array(eval(cleaned_str))
方法二:用numpy.fromstring安全转换(适合未知来源的数据)
如果担心eval的安全风险,用numpy自带的解析方法更稳妥:
arr_str = input_data[1] # 清理所有干扰字符,只保留数字和分隔空格 cleaned_str = arr_str.replace('\n', '').replace(' ...', '').strip('[]') # 按空格分隔解析成numpy数组 result_arr = np.fromstring(cleaned_str, sep=' ')
步骤3:构造你想要的输出格式
最后把结果和指定字符串组合成元组即可:
output = ("my output is", result_arr) print(output)
运行后就能得到你期望的格式,输出里的数组是完整的numpy.ndarray类型,打印时的省略号只是numpy对长数组的显示优化,实际数组包含所有原始数值。
内容的提问来源于stack exchange,提问作者mickee
相关产品推荐
相关产品推荐

