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实现的一个p2p文件传输实例
Jun 04 Python
python批量提取word内信息
Aug 09 Python
python文件名和文件路径操作实例
Sep 29 Python
Django中使用Celery的教程详解
Aug 24 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
opencv之为图像添加边界的方法示例
Dec 26 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
Apr 17 Python
用ldap作为django后端用户登录验证的实现
Dec 07 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
javascript 数组排序函数
2009/08/20 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
vue的过滤器filter实例详解
2018/09/17 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
原生JS实现天气预报
2020/06/16 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python学习笔记:字典的使用示例详解
2014/06/13 Python
基于Python的身份证号码自动生成程序
2014/08/15 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
生日派对邀请函
2014/01/13 职场文书
森林防火工作方案
2014/02/14 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
论文致谢词范文
2015/05/14 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL