正确读取文本文件中的多个列表 python
Read several lists from the text file properly python
我有一个包含 541 个列表的文本文件,每个列表有 280 个数字,如下所示:
[301.82779832839964, 301.84247725804647, 301.85718673070272, ..., 324.4056396484375, 324.20379638671875, 324.00198364257812]
.
.
[310.6907599572782, 310.68334604280966, 310.67756809346469,..., 324.23541883368551, 324.18277040240207, 324.09177971086382]
为了读取这个文本文件,我使用 numpy.genfromtxt 编写代码来读取第一个列表以进行测试,例如:
pt1 = np.genfromtxt(filn1,dtype=np.float64,delimiter=",")
print pt1[0].shape
print list(pt1[0])
我希望我能看到第一个列表的完整列表,但结果列表在第一个和最后一个位置显示 'nan',如下所示:
[nan, 301.84247725804647, 301.85718673070272, ..., 324.4056396484375, 324.20379638671875, nan]
我已经尝试了 numpy.genfromtxt 中的其他选项,我找不到为什么 'nan' 在列表的第一个和最后一个位置。本次活动不仅首发榜单,所有榜单均有活动。
任何想法或帮助将不胜感激。
谢谢,
以撒
它正在将 'nan' 应用于您文件中的 [
和 ]
。作为最后的手段,你可以这样做:
data = []
d = file('filn').read().split('\n')
for line in d:
if line:
data.append(eval(line))
data = np.asarray(data)
或者,您可以替换整个文件的 [
和 ]
,然后您可以像以前一样使用 np.genfromtxt(filn1,dtype=np.float64,delimiter=",")
,而无需获取和 nan
元素.
看来问题出在你的文本文件中的方括号;最简单的解决方案是从您的文件中删除这些字符,只需在文本编辑器中使用 find-replace,或者如果您的文件太大,可以使用 command-line 工具,例如 sed
。
import numpy as np
from ast import literal_eval
pt1 = np.array(map(literal_eval,open("in.txt")))
对于:
[301.82779832839964, 301.84247725804647, 301.85718673070272, 324.4056396484375, 324.20379638671875, 324.00198364257812]
[310.6907599572782, 310.68334604280966, 310.67756809346469, 324.23541883368551, 324.18277040240207, 324.09177971086382]
您将获得:
[[ 301.82779833 301.84247726 301.85718673 324.40563965 324.20379639
324.00198364]
[ 310.69075996 310.68334604 310.67756809 324.23541883 324.1827704
324.09177971]]
我有一个包含 541 个列表的文本文件,每个列表有 280 个数字,如下所示:
[301.82779832839964, 301.84247725804647, 301.85718673070272, ..., 324.4056396484375, 324.20379638671875, 324.00198364257812]
.
.
[310.6907599572782, 310.68334604280966, 310.67756809346469,..., 324.23541883368551, 324.18277040240207, 324.09177971086382]
为了读取这个文本文件,我使用 numpy.genfromtxt 编写代码来读取第一个列表以进行测试,例如:
pt1 = np.genfromtxt(filn1,dtype=np.float64,delimiter=",")
print pt1[0].shape
print list(pt1[0])
我希望我能看到第一个列表的完整列表,但结果列表在第一个和最后一个位置显示 'nan',如下所示:
[nan, 301.84247725804647, 301.85718673070272, ..., 324.4056396484375, 324.20379638671875, nan]
我已经尝试了 numpy.genfromtxt 中的其他选项,我找不到为什么 'nan' 在列表的第一个和最后一个位置。本次活动不仅首发榜单,所有榜单均有活动。
任何想法或帮助将不胜感激。
谢谢,
以撒
它正在将 'nan' 应用于您文件中的 [
和 ]
。作为最后的手段,你可以这样做:
data = []
d = file('filn').read().split('\n')
for line in d:
if line:
data.append(eval(line))
data = np.asarray(data)
或者,您可以替换整个文件的 [
和 ]
,然后您可以像以前一样使用 np.genfromtxt(filn1,dtype=np.float64,delimiter=",")
,而无需获取和 nan
元素.
看来问题出在你的文本文件中的方括号;最简单的解决方案是从您的文件中删除这些字符,只需在文本编辑器中使用 find-replace,或者如果您的文件太大,可以使用 command-line 工具,例如 sed
。
import numpy as np
from ast import literal_eval
pt1 = np.array(map(literal_eval,open("in.txt")))
对于:
[301.82779832839964, 301.84247725804647, 301.85718673070272, 324.4056396484375, 324.20379638671875, 324.00198364257812]
[310.6907599572782, 310.68334604280966, 310.67756809346469, 324.23541883368551, 324.18277040240207, 324.09177971086382]
您将获得:
[[ 301.82779833 301.84247726 301.85718673 324.40563965 324.20379639
324.00198364]
[ 310.69075996 310.68334604 310.67756809 324.23541883 324.1827704
324.09177971]]