簡體   English   中英

從文件中讀取行並轉換為 numpy

[英]readlines from file and convert to numpy

我正在嘗試讀取一個文件並將其轉換為 N x 5 數組。 我不能使用 loadtxt,因為文件太復雜了。 我必須逐行閱讀; 但是,我希望格式與使用 np.loadtxt 時獲得的格式一樣; 例如

[[ 8.00000e+00  4.00000e+00  3.82920e+00 -3.71733e-02  2.14022e+01]
 [ 5.00000e+00  4.00000e+00  9.14763e+00  3.06177e+00  2.12681e+01]
 [ 3.00000e+00  4.00000e+00  2.49941e+01  2.73711e+01  3.07871e+00]
 [ 1.00000e+01  4.00000e+00  2.47697e+01  3.04612e+01  7.01204e+00]
 [ 1.50000e+01  4.00000e+00  2.18943e+01  4.54100e+01  1.86717e+01]]

我正在做以下事情:

   f = open(filename, 'r+')
   lines = f.readlines()
   f.close()
   Rlines = list(reversed(lines)) # Need to read the file backwards
   yarray = []
   skip = 0
   for i in range(0, len(Rlines)):
      if skip:
         skip -=1
      elif "ITEM" in Rlines[i]:  # Need to skip 8 lines every occurrence of ITEM
         skip = 8
      else:
         yvalue = Rlines[i].split()
         yarray.append(yvalue)
   yarray = np.array(yarray)
   return yarray

我得到:

[array(['15', '4', '-14.339', '11.4973', '37.7431'], dtype='<U7'),
 array(['7', '4', '65.9747', '-5.05116', '-36.7654'], dtype='<U8'),
 array(['10', '4', '13.7083', '-40.7658', '-6.79697'], dtype='<U8'),
 array(['3', '4', '5.10123', '51.4941', '-93.8115'], dtype='<U8'),
 array(['16', '4', '-17.8979', '-1.56454', '-22.2222'], dtype='<U8'),
 array(['4', '4', '10.9422', '3.34997', '-5.03861'], dtype='<U8')]

謝謝你的幫助。

利用

yvalue = np.fromstring(Rlines[i], sep=' ')

代替

yvalue = Rlines[i].split()

將行轉換為 numpy arrays。

https://numpy.org/doc/stable/reference/generated/numpy.fromstring.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM