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开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
不要用强制方法杀掉python线程
Feb 26 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 Python
python中hashlib模块用法示例
Oct 30 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
基于python生成英文版词云图代码实例
May 16 Python
python从PDF中提取数据的示例
Oct 30 Python
浅析python实现动态规划背包问题
Dec 31 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获取mysql版本的几种方法小结
2008/03/25 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
python+selenium开发环境搭建图文教程
2017/08/11 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
银行青年文明号事迹材料
2014/05/31 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
MySQL 逻辑备份 into outfile
2022/05/15 MySQL
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL