来自文本文件的矩阵输入(python 3)

时间:2014-05-05 22:59:01

标签: python-3.x input matrix integer text-files

我试图找到一种能够从文本文件中输入矩阵的方法;

例如,

文本文件将包含

1 2 3
4 5 6
7 8 9

它会生成一个带有这些数字的矩阵并将其放入矩阵= [[1,2,3],[4,5,6],[7,8,9]]

然后这必须与我打印矩阵的方式兼容:

 print('\n'.join([' '.join(map(str, row)) for row in matrix]))

到目前为止,我试过了这个

chemin =输入(' entrez le chemin du fichier')

        path = input('enter file location') 

        f = open ( path , 'r')
        matrix = [ map(int,line.split(','))) for line in f if line.strip() != "" ]

它只是返回一个地图对象,当我尝试打印矩阵时返回错误。

我做错了什么?矩阵应包含从文本文件中读取的矩阵而不是地图对象,我不想使用外部库,如numpy

由于

3 个答案:

答案 0 :(得分:2)

您可以使用列表理解:

<强> myfile.txt

1 2 3
4 5 6
7 8 9


>>> matrix = open('myfile.txt').read()
>>> matrix = [item.split() for item in matrix.split('\n')[:-1]]
>>> matrix
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>> 

您还可以为此创建一个函数:

>>> def matrix(file):
...     contents = open(file).read()
...     return [item.split() for item in contents.split('\n')[:-1]]
... 
>>> matrix('myfile.txt')
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>> 

答案 1 :(得分:0)

numpy.genfromtxt()中所述:

import StringIO, numpy
data = "1 2 3\n4 5 6\n7 8 9"
numpy.genfromtxt(StringIO.StringIO(data), delimiter = ' ')

> array([[ 1.,  2.,  3.],                                                  
       [ 4.,  5.,  6.],                                                  
       [ 7.,  8.,  9.]])

拿两个:

[list(map(int, line.split(' '))) for line in data.split('\n')]
> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

答案 2 :(得分:0)

正在使用python2(例如Python 2.7.10)和python3(例如Python 3.6.4)

class Company extends Model {
    public function sqlWithJoin() {
        $users = DB::table('company')
        ->leftJoin('user', 'company.id', '=', 'user.company_id')
        ->get();

        return $users;
    }
}