Python中'Matlab fscan'的等效函数是什么?

5 投票
5 回答
10679 浏览
提问于 2025-04-16 14:15

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 在这种情况下可能更合适。

撰写回答