python – 对numpy数组中存在的元组中的列进行切片

python – 对numpy数组中存在的元组中的列进行切片,第1张

概述我已将文本文件导入到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, '2 我已将文本文件导入到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',('f3','S19')])

如果我现在尝试列切片,即使用提取第一列或第二列

data[:,0]

它说“太多指数”.我发现这是由于它的存储方式.所有行都存储为元组而不是列表/数组.
我想过使用“最丑”的方式来执行切片而不必使用迭代.那就是将每行中的元组转换为列表并将其放回到numpy数组中.这样的事情

data=np.asarray([List(i) for i in data])

但是对于上面的问题,我正在丢失每列的数据类型.每个元素都将存储为字符串,而不是整数或浮点数,这是在前一种情况下自动检测到的.
现在,如果我想切片列而不必使用迭代,有什么办法吗?

解决方法 np.genfromtext为你创建的不是一个元组数组,它​​有对象dtype,但是有一个记录数组.你可以从奇怪的dtype中看出来:

dtype=[('f0','S19')]

该列表中的每个元组保持相应字段的名称,并且其dtype,< i4是小端4字节整数,< f8是小端8字节浮点数,S19是19字符长字符串.您可以按名称访问字段:

In [2]: x['f0']Out[2]: array([ 534,650,675,715,2884,3799,4549,4819])In [3]: x['f1']Out[3]: array([ 116.48482,116.42967])
总结

以上是内存溢出为你收集整理的python – 对numpy数组中存在的元组中的列进行切片全部内容,希望文章能够帮你解决python – 对numpy数组中存在的元组中的列进行切片所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存