与Matlab textscan等价的Python

2024-05-17 17:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将一些Matlab代码传输到Python。我对Python比较陌生,不确定Python是否等同于Matlab的^{}方法。任何帮助都将不胜感激。


Tags: 方法代码matlab陌生
3条回答

你得找努比和派姆马特。如果我对textscan()的理解正确,您可以使用open()

将MATLAB的textscan转换为Python+NumPy的^{}的示例:

让我们的数据文件results.csv包含:

0.6236,sym2,1,5,10,10
0.6044,sym2,2,5,10,10
0.548,sym2,3,5,10,10
0.6238,sym2,4,5,10,10
0.6411,sym2,5,5,10,10
0.7105,sym2,6,5,10,10
0.6942,sym2,7,5,10,10
0.6625,sym2,8,5,10,10
0.6531,sym2,9,5,10,10

Matlab代码:

fileID = fopen('results.csv');
d = textscan(fileID,'%f %s %d %d %d %d', 'delimiter',',');
fclose(fileID);

Python+NumPy代码:

fd = open('results2.csv','r')    
d = np.loadtxt(fd,
           delimiter=',',
           dtype={'names': ('col1', 'col2', 'col3', 'col4', 'col5', 'col6'),
           'formats': ('float', 'S4', 'i4', 'i4', 'i4', 'i4')})
fd.close()

有关类型的详细信息,请参见Data type objects (dtype)

如果你要把Matlab翻译成Python,我假设你已经在使用NumPy了。

在这种情况下,您可以使用^{}(如果没有缺少值)或^{}(如果缺少值:我不确定Matlab的textscan是否处理这个问题)。

如果你需要更多的帮助,请给我们更多的细节!

相关问题 更多 >