结构化数组

假设我们要保存这样的数据:

  name age wgt
0 dan 1 23.1
1 ann 0 25.1
2 sam 2 8.3

希望定义一个一维数组,每个元素有三个属性 name, age, wgt,此时我们需要使用结构化数组。

定义数组 a

0 1 2 3
1.0 2.0 3.0 4.0

使用 view 方法,将 a 对应的内存按照复数来解释。

0 1 2 3
1.0 2.0 3.0 4.0
real imag real imag

事实上,我们可以把复数看成一个结构体,第一部分是实部,第二部分是虚部,这样这个数组便可以看成是一个结构化数组。

换句话说,我们只需要换种方式解释这段内存,便可以得到结构化数组的效果!

0 1 2 3
1.0 2.0 3.0 4.0
mass vol mass vol

例如,我们可以将第一个浮点数解释为质量,第二个浮点数解释为速度,则这段内存还可以看成是包含两个域(质量和速度)的结构体。

这里,我们使用 dtype 创造了自定义的结构类型,然后用自定义的结构来解释数组 a 所占的内存。

这里 f4 表示四字节浮点数,< 表示小字节序。

利用这个自定义的结构类型,我们可以这样初始化结构化数组:

第一个元素:

得到第一个元素的速度信息,可以使用域的名称来索引:

得到所有的质量信息:

自定义排序规则,先按速度,再按质量:

回到最初的例子,定义一个人的结构类型:

查看类型所占字节数:

产生一个 3 x 4 共12人的空结构体数组:

从文本中读取结构化数组

我们有这样一个文件:

利用 loadtxt 指定数据类型,从这个文件中读取结构化数组:

查看 name 域:

删除文件:

 对于下面的文件:

定义转换函数处理材料属性,使之对应一个整数:

使用 genfromtxt 载入数据,可以自动从第一行读入属性名称:

删除文件:

嵌套类型

有时候,结构数组中的域可能包含嵌套的结构,例如,在我们希望在二维平面上纪录一个质点的位置和质量:

position mass
x y

那么它的类型可以这样嵌套定义:

假设数据文件如下:

查看位置的 x 轴,删除生成的文件:

numpy结构化数组相关推荐

  1. 数据科学 IPython 笔记本 9.11 结构化数据:NumPy 的结构化数组

    9.11 结构化数据:NumPy 的结构化数组 本节是<Python 数据科学手册>(Python Data Science Handbook)的摘录. 译者:飞龙 协议:CC BY-NC ...

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

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

  3. python运算学习之Numpy ------ 数组操作:连接数组、拆分数组 、广播机制、结构化数组、文件贮存与读写、np.where、数组去重...

    数组的连接: 1 # 连接数组 2 A = np.zeros((3, 4)) 3 B = np.ones_like(A) 4 print(A, "\n-------分割符--------\n ...

  4. python 结构体数组_关于python:将结构化数组转换为常规NumPy数组

    我认为答案将非常明显,但目前看不到. 如何将记录数组转换回常规ndarray? 假设我有以下简单的结构化数组: x = np.array([(1.0, 4.0,), (2.0, -1.0)], dty ...

  5. 学习笔记(05):Python数据殿堂:数据分析与数据可视化-花哨的索引,数组的排序,结构化数组...

    立即学习:https://edu.csdn.net/course/play/27352/363912?utm_source=blogtoedu 花销索引:使用数组作为索引 可以快速访问复杂数组的子数据 ...

  6. numpy 花哨的索引、排序和结构化数据

    花哨的索引 使用数组作为索引叫花哨的索引(Fnacy Indexing) 花哨的索引让我们快速访问复杂数组的子数据集 使用花哨的索引同样可以对子数据集进行写操作 利用花哨的索引获得的结果与索引的形状( ...

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

    第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说,用numpy的主要目的在于应用矢量化运算.Numpy并没有多么高级的数据分析功能,理解Numpy ...

  8. python数组排序-python - 按列在NumPy中对数组进行排序

    python - 按列在NumPy中对数组进行排序 如何在第n列中对NumPy中的数组进行排序? 例如, a = array([[9, 2, 3], [4, 5, 6], [7, 0, 5]]) 我想 ...

  9. NumPy (6)-结构化数据类型数组

    NumPy提供了创建结构化数据类型数组的强大功能.这些数组允许通过指定的字段操作数据. person=np.array([(1,"lisi",23,"man") ...

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

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

最新文章

  1. 面试常见问题_软件实施工程师面试中的常见问题都有哪些呢?
  2. 振奋!中国正式进入5G元年;华为5G俄罗斯签下大单;王坚进入工程院院士第二轮评审...
  3. C++ 通讯录设计(一)
  4. SpringCloud工作笔记078---SpringBoot中使用sping事件驱动模型
  5. paip.输入法编程---词频顺序order by py
  6. 6阶子群同构于s3或者z6_近世代数复习题
  7. 路畅安卓最新固件升级_【精】2017.11.10日更新 路畅软件升级,最新版4.0.9 更新【郑重声明】...
  8. 蓝牙5.0与蓝牙4.2的有哪些区别,你了解吗?
  9. 【U8】13.0 固定资产折旧清单与折旧分配表不一致的问题
  10. 对于手写签名生成图片储存和回显的实现
  11. 平台网络安全能力知多少
  12. 群晖NAS搭建web服务器,并发布公网可访问 3/4
  13. PHP多进程协作编程之-popen
  14. UnityDOTween动画脚本控制播放与暂停。
  15. 机甲 java_强殖机甲之变身斗士
  16. Elasticsearch:使用 RPM 安装包来安装 Elastic Stack 8.x
  17. zipfile模块的基本使用
  18. 线段树扫描线模板(求面积和周长) Picture
  19. 谈谈你对计算机重要性的认识,西北工业大学计算机辅助制造考研资料
  20. [教程] Flex中的皮肤

热门文章

  1. Godot官网新闻翻译 - 2015年
  2. 腾讯微云和坚果云哪个好用?
  3. 关于WEP的产生原因及其原理
  4. 中南大学2015年研究生复试淘汰率将超40%
  5. 在三层交换机上配置Trunk并指定接口封装为802.1q
  6. 并发编程之:线程池(二)
  7. 二次型相似对角化的原因
  8. jzoj 4638. 第三条跑道
  9. 软件测试中的心理学效应
  10. fanuc机器人自动程序前怎么回原点_FANUC机器人宏程序自动运行的方法及启动宏程序的步骤教程...