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结构化数组的更多相关文章

  1. Numpy 系列(九)- 结构化数组

      简介 之前我们操作Numpy的数组时,都是通过索引来操作的.针对二维数组,使用索引可以完成对行.列的操作.但是这是非常不直观的.可以把二维数组想象成一个excel表格,如果表格没有列名,操作起来会 ...

  2. NumPy之:结构化数组详解

    目录 简介 结构化数组中的字段field 结构化数据类型 创建结构化数据类型 从元组创建 从逗号分割的dtype创建 从字典创建 操作结构化数据类型 Offsets 和Alignment Field ...

  3. Python数据科学手册-Numpy的结构化数组

    结构化数组 和 记录数组 为复合的.异构的数据提供了非常有效的存储 (一般使用pandas 的 DataFrame来实现) 传入的dtpye 使用 Numpy数据类型 Character Descri ...

  4. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

  5. NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构

    本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...

  6. TensorFlow从1到2(六)结构化数据预处理和心脏病预测

    结构化数据的预处理 前面所展示的一些示例已经很让人兴奋.但从总体看,数据类型还是比较单一的,比如图片,比如文本. 这个单一并非指数据的类型单一,而是指数据组成的每一部分,在模型中对于结果预测的影响基本 ...

  7. Python中的结构化数据分析利器-Pandas简介

    Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发tea ...

  8. 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算

    <利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...

  9. Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  10. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

随机推荐

  1. win终端利器-Cmder的安装使用

    cmder 官网:https://cmder.app/ 安装 直接选择full版本下载,完成后解压即可 启动 直接双击Cmder.exe 如果每次都进入到 Cmder 解压目录双击 Cmder.exe ...

  2. 【Azure 应用服务】PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢?

    问题描述 PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢? 问题解答 经过查询Azure App Service官方文档,可能通过在项目根目录下添加.h ...

  3. Linux_Centos_yum报错总结

    ​ 此篇适用于yum报错[尝试其他镜像]并且[curl 外网]不通的情况,此时一般考虑是网络的问题 一,出现的报错信息: 此时测试curl / ping www.baidu.com会发现无法连通 二, ...

  4. Abp.Zero 手机号免密登录验证与号码绑定功能的实现(三):Vue网页端开发

    前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读. 首先来编写发送验证码函数, 登录,绑定,解绑的业务都需要发送验证码功能,通过c ...

  5. 单词本z custom cu = com 一起 都, st=suet 自己, om 尾缀, 都是自己身上的 = 习惯,习俗

    单词本z custom cu = com 一起 都, st=suet 自己, om 尾缀, 都是自己身上的 = 习惯,习俗 custom 来自拉丁语 consuetus cu = com st = s ...

  6. git svn 提交代码日志填写规范 BUG NEW DEL CHG TRP gitz 日志z

    git svn 提交代码日志填写规范 BUG NEW DEL CHG TRP gitz 日志z

  7. vue3 如果用ts,导出时候要用 defineComponent,这俩是配对的,为了类型的审查正确

    vue3 如果用ts,导出时候要用 defineComponent,这俩是配对的,为了类型的审查正确

  8. idea dev 分支合并到 master 流程

    合并分支前要全部提交 包括config.js 要不merge时候很麻烦 1 切换到master分支 Checkout 2 Merge into Current 3 commit push 4 切换回d ...

  9. crc16校验C语言源码实例解析

    一 概念: 循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC.它是利用除法及余数的原理来作错误侦测(Error Detecting)的.实际应用时,发送装置计算出 ...

  10. Kotlin学习快速入门(11)—— 枚举类的使用

    原文地址:Kotlin学习快速入门(11)-- 枚举类的使用 - Stars-One的杂货小窝 由于有时候偶尔用到枚举类,所以简单记录一下,和Java的一起对比记录 下面以一个简单的四季设计一个枚举类 ...