python – 对numpy数组中存在的元组中的列进行切片
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 对numpy数组中存在的元组中的列进行切片,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1595字,纯文字阅读大概需要3分钟。
内容图文
![python – 对numpy数组中存在的元组中的列进行切片](/upload/InfoBanner/zyjiaocheng/744/9598d0f738774ca48ede7a0732d4b4cc.jpg)
我已将文本文件导入到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])
但是对于上面的问题,我正在丢失每列的数据类型.每个元素都将存储为字符串,而不是整数或浮点数,这是在前一种情况下自动检测到的.
现在,如果我想切片列而不必使用迭代,有什么办法吗?
解决方法:
np.genfromtext为你创建的不是一个元组数组,它??有对象dtype,但是有一个记录数组.你可以从奇怪的dtype中看出来:
dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '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.4978 , 116.31873, 116.70027, 116.67727,
116.29838, 116.48405, 116.42967])
内容总结
以上是互联网集市为您收集整理的python – 对numpy数组中存在的元组中的列进行切片全部内容,希望文章能够帮你解决python – 对numpy数组中存在的元组中的列进行切片所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。