[]的存在和,的缺失使得这类字符串的正常解析非常困难。不止一次,当我从一个SO问题中复制时,我只是咬紧牙关编辑了粘贴,这样它就可以解析了。在
使用loadtxt或{}需要删除{}。作为列表进行分析需要添加,。在
在本例中,将\n替换为,很容易。如果每行有多个数字,则需要更多的工作,将w/s替换为,。在In [252]: txt="[[ 1.62434536]\n [-0.61175641]\n [-0.52817175]\n [-1.07296862]\n [ 0.86540763]\n [-2.3015387 ]\n [ 1.74481176]\n [-0.7612069 ]\n [ 0.31 90391 ]\n [-0.24937038]\n [ 1.46210794]]"
为了使这个txt正确,我不得不编辑掉省略号。这是从你的粘贴,但在现实世界中,它可能是数组显示的一部分。在
^{pr2}$
一旦我有了,分隔的数据,我就可以用多种方式将其解析为一个列表,然后创建一个数组。在In [254]: eval(txt1)
Out[254]:
[[1.62434536],
[-0.61175641],
[-0.52817175],
...
[1.46210794]]
In [255]: np.array(_)
Out[255]:
array([[ 1.62434536],
[-0.61175641],
....
[ 1.46210794]])
在某些情况下,eval太强大了。json是更安全的列表解析器:In [256]: import json
In [257]: json.loads(txt1)
Out[257]:
[[1.62434536],
[-0.61175641],
....
[1.46210794]]
作为ast模块中的函数:In [258]: import ast
In [259]: ast.literal_eval(txt1)
Out[259]:
[[1.62434536],
[-0.61175641],
....
[1.46210794]]