如何在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)

如果有任何关于如何读取这种由空格/列分隔的数据的帮助,我们将不胜感激!

使用numpy.fromstring

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.   , 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 ])

最新更新