python - 混合类型的numpy数据切片

标签 python csv numpy

我使用 numpy.genfromtxt 从一个 csv 文件加载数据,这个文件有混合数据类型,如下所示:

date,value1,value2
1997-02, 432, 1
1997-03, 300, 1
1997-04, 432, 0

我使用以下命令加载数据:

data = numpy.genfromtxt('data/test.csv', dtype=None, delimiter=',', skip_header=1)

我明白了

array([(b'1997-02', 432, 1), (b'1997-03', 300, 1), (b'1997-04', 432, 0)], 
      dtype=[('f0', 'S7'), ('f1', '<i8'), ('f2', '<i8')])

现在我只想要这个数据的日期,我怎样才能用混合类型对 numpy 数组进行切片?我尝试使用 data[:,0] 但它不起作用

最佳答案

可以使用字段名:

data['f0']

# array([b'1997-02', b'1997-03', b'1997-04'], 
#       dtype='|S7')

进一步为了您的阅读目的,我认为您想指定 names = True 而不是 skip_header 以便第一行将作为字段名称读入结构化数组:

data = np.genfromtxt('data/test.csv', dtype=None, delimiter=',', names = True)
​    
data
# array([(b'1997-02', 432, 1), (b'1997-03', 300, 1), (b'1997-04', 432, 0)], 
#       dtype=[('date', 'S7'), ('value1', '<i8'), ('value2', '<i8')])

现在您可以访问 date 作为:

data['date']
# array([b'1997-02', b'1997-03', b'1997-04'], 
#       dtype='|S7')

关于python - 混合类型的numpy数据切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033362/

相关文章:

sql-server - 快速将一些csv数据导入sql server的好工具

python - 如何最有效地将方形numpy矩阵 reshape 为对角线结构的 "diamond"

python - 如何 reshape 这个 numpy 数组以排除 "extra dimension"?

python - 聊天服务器引发 TypeError : descriptor 'encode' requires a 'str' object but received a 'unicode'

python - 将平面列表转换为嵌套列表

javascript - 尝试将值从 javascript 发送到 python 服务器

python - 在 Pandas 中分隔和堆叠列(Python 3.4)

csv - 确保上传的文件是gras中的csv文件的正确方法?

python-3.x - numpy 数组的 True 和 False 索引

python - 在 MultiSelectField 中按一位数字过滤