我有一个大文本文件,它是某些代码的输出,它包含数字列表。文件中列表的格式如下
[ 11.42102518 3.3538624 231.82137052 352.12777653] [ 12.68274035 2.84982539 292.99135783 331.74058558] [ 11.34657161 3.38423623 265.82486527 335.52547905] [ 12.74354078 3.57487634 241.38692542 322.61793392] [ 12.34540891 7.43226428 241.87210696 364.56618065] [ 12.11139764 4.19664745 239.1656334 321.70798174] [ 12.78659285 5.29236544 232.36062356 315.21861344] [ 12.69345477 3.21991939 285.64027138 356.25664941] [ 12.50813292 3.81440083 277.67523696 334.8178125 ] [ 13.1380115 2.84102649 270.39461828 357.04828265] [ 14.07759576 2.32715376 287.91432844 326.39725223] [ 11.85596781 4.0823778 290.16288598 353.67141937] [ 15.40525653 2.91725879 261.31334931 362.72949817] [ 15.01504576 2.46403931 275.26133082 333.77638185] [ 15.28245578 2.98091548 247.72494962 311.64421065] [ 13.49572046 2.52735399 265.58225678 332.79688739] [ 12.82575874 3.98127768 230.90060671 312.34328907] [ 16.76159178 4.02880401 281.66098464 320.10349045]
在每个500 * 20列表之后,有一个新的行\n
分隔。
我想将它们读入Nx4
的 a numpy array 。我不知道文件中存在列表的确切数量。我该怎么办?
答案 0 :(得分:1)
此代码将所有数字存储在一个数组中!!我不确定那是不是你真正想要的! :)
fh = open('text.txt').read()
pattern = re.compile("^[0-9]")
_array = []
for x in fh.split():
x = x.replace(']','')
if pattern.match(x):
_array.append(float(x))
else:
continue
fh.close()
print(_array)
答案 1 :(得分:0)
首先,您需要从文件的开头和结尾删除[,]。其次,拆分数组,最后一步拆分元素并放入数组缓冲区。
buff = []
for line in open("file.txt"):
for arr in line[1:-1].strip().split("]\t[")
row = []
for el in arr.strip().split("\t")):
row.append(float(el))
buff.append(row)