我有一个具有这种形式的文件:
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,您将不得不手动执行大量低级操作。
