Python中'Matlab fscan'的等效函数是什么?
Matlab里的函数 fscanf()
看起来非常强大。请问在Python(或者numpy)中有没有类似的功能呢?
我特别想从文件中读取一个矩阵,但不想一行一行地去读取这个矩阵。就像这样(这是在Matlab中读取一个1000x1000的二维矩阵的方式):
matrix = fscanf(fopen('input.txt'),'%d',[1000,1000]);
5 个回答
1
我觉得Wookai的回答不对。我认为你需要的是numpy.loadtxt这个函数。
3
我很确定没有现成的办法,但循环遍历其实也不难。你可以这样做:
matrix = []
for i in open('input.txt'):
matrix.append( map(int, i.split()) )
如果你需要更复杂的东西(比如不仅仅是用单个字符分开的整数),那么可以考虑使用正则表达式。
5
Python没有内置的 fscanf
函数。如果想要实现类似的功能,最简单的方法就是逐行读取文件,然后使用正则表达式来处理数据。
不过,Numpy 这个类似于Matlab的Python库,提供了一个可以读取文件并根据内容构建数组的函数:numpy.fromfile
。另外,正如其他回答中提到的,numpy.loadtxt
在这种情况下可能更合适。