3 回答
TA贡献1869条经验 获得超4个赞
np.genfromtxt如果您使用关键字numpy调用此功能,则此功能将提供该功能names=True。
例子:
>>> s = """# a, b, c
... 0.1 0 0
... 0.2 0.4 0.5
... 4 5 0.9
... 0.3 0 10
... """
>>> data = np.genfromtxt(StringIO(s),names=True)
>>> data['a']
array([ 0.1, 0.2, 4. , 0.3])
>>> data['b']
array([ 0. , 0.4, 5. , 0. ])
>>> data['c']
array([ 0. , 0.5, 0.9, 10. ])
TA贡献1874条经验 获得超12个赞
使用此文件:
#a, b, c
0.1 0 0
0.2 0.4 0.5
4 5 0.9
0.3 0 10
假设您的第一行定义了标题行,在Numpy中,您可以执行以下操作:
首先,阅读标题行:
>>> with open('/tmp/testnp.txt','r') as f:
... header=[n.strip() for n in f.readline().strip().lstrip('#').split(',')]
...
>>> header
['a', 'b', 'c']
现在,在Numpy中创建一个结构化数组,其名称与标题中的字段相同:
>>> import numpy as np
>>> struct=[(name,'float') for name in header]
>>> data=np.loadtxt('/tmp/testnp.txt',dtype=struct,comments='#')
>>> data
array([(0.1, 0.0, 0.0), (0.2, 0.4, 0.5), (4.0, 5.0, 0.9), (0.3, 0.0, 10.0)],
dtype=[('a', '<f8'), ('b', '<f8'), ('c', '<f8')])
>>> data['a']
array([ 0.1, 0.2, 4. , 0.3])
添加回答
举报