numpy结构化数组
结构化数组
假设我们要保存这样的数据:
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结构化数组相关推荐
- 数据科学 IPython 笔记本 9.11 结构化数据:NumPy 的结构化数组
9.11 结构化数据:NumPy 的结构化数组 本节是<Python 数据科学手册>(Python Data Science Handbook)的摘录. 译者:飞龙 协议:CC BY-NC ...
- NumPy之:结构化数组详解
文章目录 简介 结构化数组中的字段field 结构化数据类型 创建结构化数据类型 从元组创建 从逗号分割的dtype创建 从字典创建 操作结构化数据类型 Offsets 和Alignment Fiel ...
- python运算学习之Numpy ------ 数组操作:连接数组、拆分数组 、广播机制、结构化数组、文件贮存与读写、np.where、数组去重...
数组的连接: 1 # 连接数组 2 A = np.zeros((3, 4)) 3 B = np.ones_like(A) 4 print(A, "\n-------分割符--------\n ...
- python 结构体数组_关于python:将结构化数组转换为常规NumPy数组
我认为答案将非常明显,但目前看不到. 如何将记录数组转换回常规ndarray? 假设我有以下简单的结构化数组: x = np.array([(1.0, 4.0,), (2.0, -1.0)], dty ...
- 学习笔记(05):Python数据殿堂:数据分析与数据可视化-花哨的索引,数组的排序,结构化数组...
立即学习:https://edu.csdn.net/course/play/27352/363912?utm_source=blogtoedu 花销索引:使用数组作为索引 可以快速访问复杂数组的子数据 ...
- numpy 花哨的索引、排序和结构化数据
花哨的索引 使用数组作为索引叫花哨的索引(Fnacy Indexing) 花哨的索引让我们快速访问复杂数组的子数据集 使用花哨的索引同样可以对子数据集进行写操作 利用花哨的索引获得的结果与索引的形状( ...
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说,用numpy的主要目的在于应用矢量化运算.Numpy并没有多么高级的数据分析功能,理解Numpy ...
- python数组排序-python - 按列在NumPy中对数组进行排序
python - 按列在NumPy中对数组进行排序 如何在第n列中对NumPy中的数组进行排序? 例如, a = array([[9, 2, 3], [4, 5, 6], [7, 0, 5]]) 我想 ...
- NumPy (6)-结构化数据类型数组
NumPy提供了创建结构化数据类型数组的强大功能.这些数组允许通过指定的字段操作数据. person=np.array([(1,"lisi",23,"man") ...
- NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构...
本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...
最新文章
- 面试常见问题_软件实施工程师面试中的常见问题都有哪些呢?
- 振奋!中国正式进入5G元年;华为5G俄罗斯签下大单;王坚进入工程院院士第二轮评审...
- C++ 通讯录设计(一)
- SpringCloud工作笔记078---SpringBoot中使用sping事件驱动模型
- paip.输入法编程---词频顺序order by py
- 6阶子群同构于s3或者z6_近世代数复习题
- 路畅安卓最新固件升级_【精】2017.11.10日更新 路畅软件升级,最新版4.0.9 更新【郑重声明】...
- 蓝牙5.0与蓝牙4.2的有哪些区别,你了解吗?
- 【U8】13.0 固定资产折旧清单与折旧分配表不一致的问题
- 对于手写签名生成图片储存和回显的实现
- 平台网络安全能力知多少
- 群晖NAS搭建web服务器,并发布公网可访问 3/4
- PHP多进程协作编程之-popen
- UnityDOTween动画脚本控制播放与暂停。
- 机甲 java_强殖机甲之变身斗士
- Elasticsearch:使用 RPM 安装包来安装 Elastic Stack 8.x
- zipfile模块的基本使用
- 线段树扫描线模板(求面积和周长) Picture
- 谈谈你对计算机重要性的认识,西北工业大学计算机辅助制造考研资料
- [教程] Flex中的皮肤