Python numpy多维数组实现原理详解


Posted in Python onMarch 10, 2020

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。今天就针对多维数组展开来写博客numpy其一部分功能如下:

1.ndarray,是具有矢量算术运算且节省空间的多维数组。

2.可以用于对整组的数据快速进行运算的辨准数学函数。

3.能够用于读写磁盘数据的工具以及用于操作系统内存映射的工具。

NumPy它本身其实没有提供很高级别的数据分析功能,NumPy之于数值计算特别重要的原因之一,就是因为它能够高效的处理大数组的数据。这是因为:

1.NumPy是在一个连续的内存块中存储数据,独立于其他的Python内置对象。

2.NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。

NumPy的ndarray:一种多维数组对象

对数组进行数学运算

Python numpy多维数组实现原理详解

可以看到data的值实际是没有改变的,输出的结果只是临时结果而已。

ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。

每个数组都有一个shape(形状)和一个dtype(数据类型)。

查看ndarray的shape和dtype:

Python numpy多维数组实现原理详解

创建ndarray

创建数组最简单的办法就是使用array函数。

它接受一切序列型的对象(包括其它数组),然后产生一个新的含有传入数据的NumPy数组。

Python numpy多维数组实现原理详解

除np.array之外,还有一些函数也可以新建数组。

比如,zero和ones分别可以创建指定长度或形状的全0或全1数组。

empty可以用来创建一个没有任何具体指的数组。

要用这些方法创建多维数组,只需要传入一个表示形状的元组即可:

Python numpy多维数组实现原理详解

arange是Python内置函数range的数组版:

Python numpy多维数组实现原理详解

以下是一些数组创建函数。

由于NumPy关注的是数值计算

因此,如果没有特别指定,数据类型基本都是float64(浮点数)。

Python numpy多维数组实现原理详解

通过astype转变一个数组的dtype

如果将浮点数转换成整数,则小数部分将会被截除。

如果某字符串数组表示的全是数字,也可以用astype将其转换为数值形式。

调用astype总会创建一个新的数组(一个数据的备份),即使新的dtype与旧的dtype相同。

Python numpy多维数组实现原理详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python操作mysql中文显示乱码的解决方法
Oct 11 Python
Python网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
python3 实现调用串口功能
Dec 26 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 #Python
Python字符串hashlib加密模块使用案例
Mar 10 #Python
Python中求对数方法总结
Mar 10 #Python
Python标准库shutil模块使用方法解析
Mar 10 #Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 #Python
Python 生成VOC格式的标签实例
Mar 10 #Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 #Python
You might like
PHP 导出Excel示例分享
2014/08/18 PHP
PHP实现文件上传与下载
2020/08/28 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
window.location和document.location的区别分析
2008/12/23 Javascript
jQuery 技巧小结
2010/04/02 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python break语句详解
2014/03/11 Python
python 读写中文json的实例详解
2017/10/29 Python
python语言中with as的用法使用详解
2018/02/23 Python
python3中函数参数的四种简单用法
2018/07/09 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
京东国际站:JOYBUY
2017/11/23 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
PHP开发的一般流程
2013/08/13 面试题
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
动态密码技术
2012/10/18 面试题
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers