如何解决如何在python中读取包含numpy.ndarray的txt文件
我想知道读取包含以下值的以下test.txt
文件的正确语法是什么:
(p.s。test.txt的类型为numpy.ndarray)
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0.51 0.47 0.45
0.42 0.42 0.4 0.385 0.375 0.41 0.415 0.375 0.355 0.36 0.41 0.4
0.39 0.38 0.375 0.375 0.375 0.38 0.39 0.395 0.385 0.38 0.375 0.375
0.37 0.365 0.36 0.355 0.35 0.35 0.345 0.345 0.35 0.36 0.355 0.355
0.35 0.35 0.355 0.355 0.35 0.35 0.35 0.345 0.34 0.335 0.325 0.325
0.325 0.33 0.345 0.325 0.32 0.315 0.315 0.315 0.31 0.31 0.31 0.305
0.305 0.3 0.3 0.29 0.29 0.3 0.295 0.29 0.29 0.29 0.29 0.29]
我尝试使用以下代码读取文件:
data_test = np.genfromtxt('test.txt')
但是我得到错误信息:
ValueError: Some errors were detected !
Line #43 (got 8 columns instead of 12)
任何有关如何读取此类由空格/列分隔的数据的帮助,将不胜感激!
解决方法
with open('test.txt') as file:
data = file.read()
data = data.replace('\n','')
arr = np.fromstring(data[1:-1],sep=' ',dtype=np.float32)
,
由于可以将文件视为嵌入在非十进制垃圾中的一堆浮点,因此正则表达式可以将其拉出。只需找到所有包含小数点和句点的子字符串即可。
>>> import numpy as np
>>> import re
>>> with open('foo.txt') as fileobj:
... arr = np.array([float(val) for val in re.findall(r"[\d\.]+",... fileobj.read(),flags=re.MULTILINE)])
...
>>> arr
array([0.,0.,0.51,0.47,0.45,0.42,0.4,0.385,0.375,0.41,0.415,0.355,0.36,0.39,0.38,0.395,0.37,0.365,0.35,0.345,0.34,0.335,0.325,0.33,0.32,0.315,0.31,0.305,0.3,0.29,0.295,0.29 ])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。