我需要在python 2.7中读取一个txt文件,并从读数中创建四重列表。 txt文件中的元素是4行的块。因此,每第四行都是一个新元素。以下是文件的示例元素:
0 3 53
-0.999909 -0.0135226 851.576
0.0135226 -0.999909 901.481
0 0 1
...
因此,从这个样本中,新列表的元素将是l = [('0','3',53,矩阵[[ - 0.999909 -0.0135226 851.576],[0.0135226 -0.999909 901.481],[0 0 1 ]])] l中的所有元组都是来自该形式的txt文件的读元素(字符串,字符串,整数,矩阵)。 我已经开发了代码来形成元组中前三项的列表,但是我无法为元组的第四个元素做矩阵列表。以下是我到目前为止的情况:
import numpy as np
import re
import operator
file=open('matching.txt','r')
f=file.readlines()
v1, v2, w, r1, r2, r3 = [],[],[], [], [], []
for x, line in enumerate(f):
if x % 4 is 0:
v1.append(line[:1])
v2.append(line[2:3])
str = re.search(' ([0-9]*)\r\n', line)
if str:
found = int(str.group(1))
w.append(found)
elif x % 4 is 1:
r1.append(line)
elif x % 4 is 2:
r2.append(line)
else:
r3.append(line)
我需要从以上三个列表r1,r2,r3创建矩阵列表m,其元素将是矩阵的构建块.r1的元素是m在同一索引后的第一行矩阵,r2是在相同索引之后的m中的矩阵的secon行,r3是在相同索引之后的m中的第三行矩阵。列表m应该如下所示: M = [矩阵[[R1 [0]] [R2 [0]] [R3 [0]]],矩阵[[R1 [1] [R 2 [1] [R 3 [1]]] ...] 如何从上面的代码中的r1,r2,r3创建列表m?
谢谢你的帮助。
答案 0 :(得分:1)
试试这个:
档案Console.ReadLine()
:
a.data
代码:
0 3 53
-0.999909 -0.0135226 851.576
0.0135226 -0.999909 901.481
0 0 1
0 4 54
-0.999909 -0.0135226 851.576
0.0135226 -0.999909 901.481
1 1 2
答案 1 :(得分:1)
你的代码看起来很复杂。你为什么不喜欢这样的东西:
var body = [];
request.on('data', function(chunk) {
body.push(chunk);
}).on('end', function() {
body = Buffer.concat(body).toString();
// at this point, `body` has the entire request body stored in it as a string
});
答案 2 :(得分:1)
建立@MaxU,如果列和行标记为
,我通常会使用pandas
DataFrames
import pandas as pd
import numpy as np
DF = pd.read_table("a.data", sep=" ")
DF
0 1 2
0 0.000000 3.000000 53.000
1 -0.999909 -0.013523 851.576
2 0.013523 -0.999909 901.481
3 0.000000 0.000000 1.000
4 0.000000 4.000000 54.000
5 -0.999909 -0.013523 851.576
6 0.013523 -0.999909 901.481
7 1.000000 1.000000 2.000
然后您可以按
设置标签DF.columns = #list of column labels
DF.index = #list of index labels
顺便说一句,索引数组的速度更快,所以如果你想用这种方式对它进行索引...存储一个变量DF.as_matrix()
,然后像A[i,j]
那样索引。如果您想要对DataFrame
进行实际索引,那么请执行.iloc[i,j]
答案 3 :(得分:1)
我想这就是你要找的东西。
import numpy as np
import re
import operator
final_list = []
with open('data.txt','r') as f:
line_1 = [float(num) for num in f.readline().split()]
line_2 = [float(num) for num in f.readline().split()]
line_3 = [float(num) for num in f.readline().split()]
line_4 = [float(num) for num in f.readline().split()]
#creating matrix from the 3 lines
mat = np.matrix([line_2, line_3, line_4])
line_1.append(mat)
final_list.append(tuple(line_1))
print final_list