首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy genfromtxt -列名

Numpy genfromtxt -列名
EN

Stack Overflow用户
提问于 2012-11-23 10:39:16
回答 1查看 9.8K关注 0票数 3

我正在尝试使用genfromtxt导入一个简单的制表符分隔文本文件。我需要访问每个列标题名称,以及与该名称关联的列中的数据。目前,我正在以一种看起来有点奇怪的方式来完成这项工作。txt文件中的所有值,包括标题,都是十进制数。

代码语言:javascript
复制
sample input file:

1     2     3     4      # header row
1.2   5.3   2.8   9.5
3.1   4.5   1.1   6.7
1.2   5.3   2.8   9.5
3.1   4.5   1.1   6.7
1.2   5.3   2.8   9.5
3.1   4.5   1.1   6.7


table_data = np.genfromtxt(file_path)       #import file as numpy array
header_values = table_data[0,:]             # grab first row
table_values = np.delete(table_data,0,0)    # grab everything else

我知道一定有一种更合适的方法来导入数据的文本文件。我需要方便地访问每一列的标题以及与该标题值相关的相应数据。感谢你能提供的任何帮助。

澄清:

我希望能够通过使用类似于table_valuesheader_of_first_column的东西来访问一列数据。我该如何做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 10:49:01

使用names parameter将第一个有效行用作列名:

代码语言:javascript
复制
data = np.genfromtxt(
    fname,
    names = True, #  If `names` is True, the field names are read from the first valid line
    comments = '#', # Skip characters after #
    delimiter = '\t', # tab separated values
    dtype = None)  # guess the dtype of each column

例如,如果我将您发布的数据修改为真正的制表符分隔,则以下代码可以工作:

代码语言:javascript
复制
import numpy as np
import os
fname = os.path.expanduser('~/test/data')
data = np.genfromtxt(
    fname,
    names = True, #  If `names` is True, the field names are read from the first valid line
    comments = '#', # Skip characters after #
    delimiter = '\t', # tab separated values
    dtype = None)  # guess the dtype of each column
print(data)
# [(1.2, 5.3, 2.8, 9.5) (3.1, 4.5, 1.1, 6.7) (1.2, 5.3, 2.8, 9.5)
#  (3.1, 4.5, 1.1, 6.7) (1.2, 5.3, 2.8, 9.5) (3.1, 4.5, 1.1, 6.7)]

print(data['1'])
# [ 1.2  3.1  1.2  3.1  1.2  3.1]
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13522470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档