我已将文本文件导入到 numpy 数组中,如下所示。
data=np.genfromtxt(f,dtype=None,delimiter=',',names=None)
其中 f 包含我的 csv 文件的路径
现在数据包含以下内容。
array([(534, 116.48482, 39.89821, '2008-02-03 00:00:49'),
(650, 116.4978, 39.98097, '2008-02-03 00:00:02'),
(675, 116.31873, 39.9374, '2008-02-03 00:00:04'),
(715, 116.70027, 40.16545, '2008-02-03 00:00:45'),
(2884, 116.67727, 39.88201, '2008-02-03 00:00:48'),
(3799, 116.29838, 40.04533, '2008-02-03 00:00:37'),
(4549, 116.48405, 39.91403, '2008-02-03 00:00:42'),
(4819, 116.42967, 39.93963, '2008-02-03 00:00:43')],
dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '<f8'), ('f3', 'S19')])
如果我现在尝试列切片,即使用提取第一列或第二列
data[:,0]
它说“索引太多”。我发现这是由于它的存储方式。所有行都存储为元组而不是列表/数组。我想过使用“最丑陋”的方式来执行切片,而不必使用迭代。那就是将每行中的元组转换为列表并将其放回 numpy 数组。像这样的东西
data=np.asarray([list(i) for i in data])
但是对于上述问题,我丢失了每一列的数据类型。每个元素都将存储为字符串,而不是在前一种情况下自动检测到的整数或浮点数。
现在,如果我想在不必使用迭代的情况下对列进行切片,有什么办法吗?