将日期读取为列名Numpy genfromtx

2024-09-30 04:36:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从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列数组。你知道吗

我错过了什么?你知道吗


Tags: csv数据csvfile代码numpytruenamesnp
1条回答
网友
1楼 · 发布于 2024-09-30 04:36:52

对您的示例进行操作(使用空格作为分隔符),我得到一个具有4个字段的一维结构化数组。字段名是日期,去掉了/字符。你知道吗

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')])

“列/字段”按字段名访问:

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')])

相关问题 更多 >

    热门问题