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 相关文章推荐
如何搜索查找并解决Django相关的问题
Jun 30 Python
python中黄金分割法实现方法
May 06 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
python 重定向获取真实url的方法
May 11 Python
Python之列表的插入&替换修改方法
Jun 28 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 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 include的妙用,实现路径加密
2008/07/29 PHP
PHP 加密解密内部算法
2010/04/22 PHP
php URL验证正则表达式
2011/07/19 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
php中require和require_once的区别说明
2014/02/27 PHP
smarty表格换行实例
2014/12/15 PHP
php轻松实现文件上传功能
2016/03/03 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
python读取Excel实例详解
2018/08/17 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Python列表与元组的异同详解
2019/07/02 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
后勤人员岗位职责
2013/12/17 职场文书
专升本个人自我评价
2013/12/22 职场文书
教师个人剖析材料
2014/02/05 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
个人函授自我鉴定
2014/03/25 职场文书
学习雷锋倡议书
2014/04/15 职场文书
年底个人总结范文
2015/03/10 职场文书