读取文件包含值列表到数组中

时间:2015-10-09 10:32:37

标签: python list numpy

我有一个大文本文件,它是某些代码的输出,它包含数字列表。文件中列表的格式如下

[  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 。我不知道文件中存在列表的确切数量。我该怎么办?

2 个答案:

答案 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)