Skip to main content
 首页 » 编程设计

python之使用 numpy loadtxt 函数从文本文件中读取值

2025年05月04日28TianFang

我有一个具有这种形式的文件:

label1, value1, value2, value3, 
label2, value1, value2, value3, 
... 

我想使用 numpy loadtxt 函数读取它,这样我就可以将每个标签及其值放在一个数组中,因此最终结果将是一个数组数组,每个数组都包含标签和这样的特征数组:

array([[label1, [value1, value2, value3]], 
       [label2, [value1, value2, value3]]]) 

我尝试了以下但没有成功:

c = StringIO(u"text.txt") 
np.loadtxt(c, 
   dtype={'samples': ('label', 'features'), 'formats': ('s9',np.float)}, 
   delimiter=',', skiprows=0) 

有什么想法吗?

请您参考如下方法:

最现代、最通用的方法是使用 pandas,它的解析器有更多选项和管理标签。

假设您的文件包含:

A,7,5,1 
B,4,2,7 

然后:

In [29]: import pandas as pd 
In [30]: df=pd.read_csv('data.csv',sep=',',header=None,index_col=0) 
 
In [31]: df 
Out[31]:  
   1  2  3 
0          
A  7  5  1 
B  4  2  7 

您现在可以轻松地将其转换为结构数组:

In [32]: a=df.T.to_records(index=False) 
Out[32]:  
rec.array([(7, 4), (5, 2), (1, 7)],  
          dtype=[('A', '<i8'), ('B', '<i8')]) 
 
In [33]: a['A'] 
Out[33]: array([7, 5, 1], dtype=int64) 

使用 loadtext,您将不得不手动执行大量低级操作。