我想从csv文件创建一个numpy数组。数据以逗号分隔,但如下所示:
seqid 9/19/2009 9/26/2009 10/3/2009
4315 228046 227475 239080
19866 22241 27211 25313
23436 23576 23678 24687
23593 58074 61569 58564
23609 334673 313980 246823
我想保留我的列名作为这些日期,目前我正在使用代码:
mcvs = np.genfromtxt('csvfile.csv', delimiter=',', dtype=None, names=True)
当我使用names=True
时,我得到一个void
类型的1列数组。
我在这里缺少什么?
答案 0 :(得分:0)
对样本进行操作(使用空格作为分隔符),我得到一个包含4个字段的1d结构化数组。字段名称是日期,剥离了/
字符。
In [245]: np.genfromtxt(txt,dtype=None,names=True)
Out[245]:
array([(4315, 228046, 227475, 239080), (19866, 22241, 27211, 25313),
(23436, 23576, 23678, 24687), (23593, 58074, 61569, 58564),
(23609, 334673, 313980, 246823)],
dtype=[('seqid', '<i4'), ('9192009', '<i4'), ('9262009', '<i4'), ('1032009', '<i4')])
&#39;列/字段&#39;可以通过字段名称访问:
In [252]: data['9192009']
Out[252]: array([228046, 22241, 23576, 58074, 334673])
(我稍后会看一下删除的字符)
type
不是结构化数组元素的有用测试。使用dtype
:
In [247]: type(data[0])
Out[247]: numpy.void
In [248]: data.dtype
Out[248]: dtype([('seqid', '<i4'), ('9192009', '<i4'), ('9262009', '<i4'), ('1032009', '<i4')])
deletechars
参数可让我控制是否删除/
:
In [250]: np.genfromtxt(txt,dtype=None,names=True,deletechars='')
Out[250]:
array([(4315, 228046, 227475, 239080), (19866, 22241, 27211, 25313),
(23436, 23576, 23678, 24687), (23593, 58074, 61569, 58564),
(23609, 334673, 313980, 246823)],
dtype=[('seqid', '<i4'), ('9/19/2009', '<i4'), ('9/26/2009', '<i4'), ('10/3/2009', '<i4')])