从文件中加载浮点数矩阵

时间:2018-04-25 09:37:35

标签: python string

我有一些数据,

  1  2  3  4
  3  5  6  7
  2  8  9  10

我的代码是

    #!/bin/usr/python
    file=open("fer.txt","r")
    M=[]
    P=[]
    K=[]
    def particle(M,P,K):
        for line in file:
            y=line.split()
            M.append(y)
        for i in range(3):
            for j in range(4):
                P.append(float(M[i][j]))
            K.append(P)
        return K
   print(particle(M,P,K))

然后我得到了

[[1.0, 2.0, 3.0, 4.0, 3.0, 5.0, 6.0, 7.0, 2.0, 8.0, 9.0, 10.0], [1.0, 
2.0, 3.0, 4.0, 3.0, 5.0, 6.0, 7.0, 2.0, 8.0, 9.0, 10.0], [1.0, 2.0, 3.0, 
4.0, 3.0, 5.0, 6.0, 7.0, 2.0, 8.0, 9.0, 10.0]]

但我应该拥有或者我想要这样的东西,

[[1.0, 2.0, 3.0, 4.0,], [3.0, 5.0, 6.0, 7.0],[ 2.0, 8.0, 9.0, 10.0]]

编辑重复标记:我不知道它是一个重复的问题。我问的是另外一件事,我也想知道为什么我的代码不起作用。

2 个答案:

答案 0 :(得分:1)

使用迭代。您可以使用map将列表的所有元素转换为float。

<强>实施例

res = []
with open(filename2) as infile:
    for line in infile:
        line = line.strip()
        res.append(map(float, line.split()))
print(res)

<强>输出:

[[1.0, 2.0, 3.0, 4.0], [3.0, 5.0, 6.0, 7.0], [2.0, 8.0, 9.0, 10.0]]

答案 1 :(得分:0)

第一个答案是正确的,但如果你想要一个班轮:

#sample.txt content: 
1  2  3  4
3  5  6  7
2  8  9  10
#code:

In [12]: d = open('sample.txt').readlines()
    ...: result =  [map(float, x.split()) for x in d]

输出:

In [13]: result
Out[13]: [[1.0, 2.0, 3.0, 4.0], [3.0, 5.0, 6.0, 7.0], [2.0, 8.0, 9.0, 10.0]]