[英]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.