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 import用法以及与from...import的区别
May 28 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
Python玩转加密的技巧【推荐】
May 13 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
python实现商品进销存管理系统
May 30 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相关资料
2006/10/09 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
PDO::errorInfo讲解
2019/01/28 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
MooTools 1.2介绍
2009/09/14 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
Python中字典和JSON互转操作实例
2015/01/19 Python
Python复制文件操作实例详解
2015/11/10 Python
Python数据类型学习笔记
2016/01/13 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
Python datetime模块使用方法小结
2020/06/18 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
python FTP编程基础入门
2021/02/27 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
劳动模范事迹材料
2014/01/19 职场文书
大学生村官事迹材料
2014/01/21 职场文书
商务邀请函
2015/01/30 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL