我使用 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/