Numpy结构化数组
Numpy结构化数组
Numpy的结构化数组和记录数组为复合的、异构的的数据提供了非常有效的存储。
结构化数组
In [1]: import numpy as np
In [2]: name = ['A','B','C','D']
In [3]: age = [23,34,23,45]
In [4]: weight = [100,120,124,127]
In [5]: x = np.zeros(4,dtype=int)
In [6]: x
Out[6]: array([0, 0, 0, 0])
#通过字典创建复合类型
In [7]: data = np.zeros(4,dtype={'names':('name','age','weight'),'formats':('U10','i4','f8')})
In [8]: data
Out[8]:
array([('', 0, 0.), ('', 0, 0.), ('', 0, 0.), ('', 0, 0.)],
dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f8')])
In [10]: data['name'] = name
In [11]: data['age'] = age
In [12]: data['weight'] = weight
In [13]: data
Out[13]:
array([('A', 23, 100.), ('B', 34, 120.), ('C', 23, 124.), ('D', 45, 127.)],
dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f8')])
In [14]: data[data['age']<30]
Out[14]:
array([('A', 23, 100.), ('C', 23, 124.)],
dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f8')])
#通过元组列表创建复合类型
In [15]: data2 = np.zeros(4,dtype=([('name','S10'),('age','i4'),('weight','f8')]))
In [16]: data2
Out[16]:
array([(b'', 0, 0.), (b'', 0, 0.), (b'', 0, 0.), (b'', 0, 0.)],
dtype=[('name', 'S10'), ('age', '<i4'), ('weight', '<f8')])
记录数组
域可以像属性一样访问。
In [17]: data['age']
Out[17]: array([23, 34, 23, 45])
#通过np.recarray类创建一个记录数组
In [18]: data_rec = data.view(np.recarray)
In [19]: data_rec.age
Out[19]: array([23, 34, 23, 45])
In [20]: %timeit data['age']
82.4 ns ± 0.669 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
#访问时间比直接访问更快
In [22]: %timeit data_rec['age']
2.22 µs ± 32.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
#通过属性访问
In [23]: %timeit data_rec.age
2.92 µs ± 44.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
Numpy结构化数组的更多相关文章
- Numpy 系列(九)- 结构化数组
简介 之前我们操作Numpy的数组时,都是通过索引来操作的.针对二维数组,使用索引可以完成对行.列的操作.但是这是非常不直观的.可以把二维数组想象成一个excel表格,如果表格没有列名,操作起来会 ...
- NumPy之:结构化数组详解
目录 简介 结构化数组中的字段field 结构化数据类型 创建结构化数据类型 从元组创建 从逗号分割的dtype创建 从字典创建 操作结构化数据类型 Offsets 和Alignment Field ...
- Python数据科学手册-Numpy的结构化数组
结构化数组 和 记录数组 为复合的.异构的数据提供了非常有效的存储 (一般使用pandas 的 DataFrame来实现) 传入的dtpye 使用 Numpy数据类型 Character Descri ...
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...
- NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构
本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...
- TensorFlow从1到2(六)结构化数据预处理和心脏病预测
结构化数据的预处理 前面所展示的一些示例已经很让人兴奋.但从总体看,数据类型还是比较单一的,比如图片,比如文本. 这个单一并非指数据的类型单一,而是指数据组成的每一部分,在模型中对于结果预测的影响基本 ...
- Python中的结构化数据分析利器-Pandas简介
Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发tea ...
- 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算
<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...
- Spark如何与深度学习框架协作,处理非结构化数据
随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
随机推荐
- win终端利器-Cmder的安装使用
cmder 官网:https://cmder.app/ 安装 直接选择full版本下载,完成后解压即可 启动 直接双击Cmder.exe 如果每次都进入到 Cmder 解压目录双击 Cmder.exe ...
- 【Azure 应用服务】PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢?
问题描述 PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢? 问题解答 经过查询Azure App Service官方文档,可能通过在项目根目录下添加.h ...
- Linux_Centos_yum报错总结
此篇适用于yum报错[尝试其他镜像]并且[curl 外网]不通的情况,此时一般考虑是网络的问题 一,出现的报错信息: 此时测试curl / ping www.baidu.com会发现无法连通 二, ...
- Abp.Zero 手机号免密登录验证与号码绑定功能的实现(三):Vue网页端开发
前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读. 首先来编写发送验证码函数, 登录,绑定,解绑的业务都需要发送验证码功能,通过c ...
- 单词本z custom cu = com 一起 都, st=suet 自己, om 尾缀, 都是自己身上的 = 习惯,习俗
单词本z custom cu = com 一起 都, st=suet 自己, om 尾缀, 都是自己身上的 = 习惯,习俗 custom 来自拉丁语 consuetus cu = com st = s ...
- git svn 提交代码日志填写规范 BUG NEW DEL CHG TRP gitz 日志z
git svn 提交代码日志填写规范 BUG NEW DEL CHG TRP gitz 日志z
- vue3 如果用ts,导出时候要用 defineComponent,这俩是配对的,为了类型的审查正确
vue3 如果用ts,导出时候要用 defineComponent,这俩是配对的,为了类型的审查正确
- idea dev 分支合并到 master 流程
合并分支前要全部提交 包括config.js 要不merge时候很麻烦 1 切换到master分支 Checkout 2 Merge into Current 3 commit push 4 切换回d ...
- crc16校验C语言源码实例解析
一 概念: 循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC.它是利用除法及余数的原理来作错误侦测(Error Detecting)的.实际应用时,发送装置计算出 ...
- Kotlin学习快速入门(11)—— 枚举类的使用
原文地址:Kotlin学习快速入门(11)-- 枚举类的使用 - Stars-One的杂货小窝 由于有时候偶尔用到枚举类,所以简单记录一下,和Java的一起对比记录 下面以一个简单的四季设计一个枚举类 ...