从文本行中读取行作为单独的数组
Read in lines from text line as separate arrays
我有一个文本文件,其中包含类似于数组格式的字符串行。我最初有一个 numpy 数组列表,然后像这样将它们读入文件,其中每个数组大约有 5 个浮点数:
import numpy as np
parameters = [np.array(...), np.array(...), ...]
with open('params.txt', 'w') as f:
for param in parameters:
f.write(str(param)+'\n')
现在我想将它们读回,作为单独数组的列表。然而,我对此有疑问 - 以下是我正在尝试做的事情:
parameters = []
with open('params.txt', 'r') as f:
for line in f:
parameters.append(np.array(line))
但是现在当我稍后尝试索引这些数组中的元素并使用列表理解时,例如:[params[2] for params in parameters]
,我得到这个错误:IndexError: too many indices for array
.
我也试过用 line.split(',')
读出它们,但这并没有给我想要的结果,只是进一步弄乱了格式。我怎样才能做到这一点?
我的文本文件格式:
[242.1383, 131.087, 1590.853, 1306.09, 783.979]
[7917.102, 98.12, 21.43, 13.1383, 6541.33]
[823.74, 51.31, 9622.434, 974.11, 980.177]
...
我想要的:
parameters = [np.array([242.1383, 131.087, 1590.853, 1306.09, 783.979]), np.array([7917.102, 98.12, 21.43, 13.1383, 6541.33]), np.array([823.74, 51.31, 9622.434, 974.11, 980.177]), ...]
你在找这样的东西吗?
parameters = []
for line in f.readlines():
y = [value for value in line.split()]
parameter.append( y )
如果我知道文本文件的样子会更容易,如果会显示您试图从中读取的文本文件的格式
我想出了一个稍微简单的方法来完成这个,而不必担心所有的字符串解析,使用正则表达式:
import re
parameters = []
with open('params.txt', 'r') as f:
for line in f:
set = [float(value) for value in re.findall('\d+\.?\d*', line)]
parameters.append(np.array(set))
我有一个文本文件,其中包含类似于数组格式的字符串行。我最初有一个 numpy 数组列表,然后像这样将它们读入文件,其中每个数组大约有 5 个浮点数:
import numpy as np
parameters = [np.array(...), np.array(...), ...]
with open('params.txt', 'w') as f:
for param in parameters:
f.write(str(param)+'\n')
现在我想将它们读回,作为单独数组的列表。然而,我对此有疑问 - 以下是我正在尝试做的事情:
parameters = []
with open('params.txt', 'r') as f:
for line in f:
parameters.append(np.array(line))
但是现在当我稍后尝试索引这些数组中的元素并使用列表理解时,例如:[params[2] for params in parameters]
,我得到这个错误:IndexError: too many indices for array
.
我也试过用 line.split(',')
读出它们,但这并没有给我想要的结果,只是进一步弄乱了格式。我怎样才能做到这一点?
我的文本文件格式:
[242.1383, 131.087, 1590.853, 1306.09, 783.979]
[7917.102, 98.12, 21.43, 13.1383, 6541.33]
[823.74, 51.31, 9622.434, 974.11, 980.177]
...
我想要的:
parameters = [np.array([242.1383, 131.087, 1590.853, 1306.09, 783.979]), np.array([7917.102, 98.12, 21.43, 13.1383, 6541.33]), np.array([823.74, 51.31, 9622.434, 974.11, 980.177]), ...]
你在找这样的东西吗?
parameters = []
for line in f.readlines():
y = [value for value in line.split()]
parameter.append( y )
如果我知道文本文件的样子会更容易,如果会显示您试图从中读取的文本文件的格式
我想出了一个稍微简单的方法来完成这个,而不必担心所有的字符串解析,使用正则表达式:
import re
parameters = []
with open('params.txt', 'r') as f:
for line in f:
set = [float(value) for value in re.findall('\d+\.?\d*', line)]
parameters.append(np.array(set))