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中下划线的使用方法
Mar 27 Python
Python实现的简单文件传输服务器和客户端
Apr 08 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
python3.5的包存放的具体路径
Aug 16 Python
Python3获取cookie常用三种方案
Oct 05 Python
Python高并发和多线程有什么关系
Nov 14 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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把网页保存为word文件的三种方法
2014/04/01 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
javascript天然的迭代器
2010/10/29 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
js变换显示图片的实例
2013/04/16 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
原生Javascript插件开发实践
2017/01/09 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
Python中asyncore的用法实例
2014/09/29 Python
Python字符串格式化输出方法分析
2016/04/13 Python
Python算法应用实战之队列详解
2017/02/04 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
python获取引用对象的个数方式
2019/12/20 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
安全生产活动月方案
2014/03/09 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
2014国庆节标语口号
2014/09/19 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
七夕情人节问候语
2015/11/11 职场文书
高二数学教学反思
2016/02/18 职场文书
Python 中的Sympy详细使用
2021/08/07 Python
python 详解turtle画爱心代码
2022/02/15 Python
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
Redis实现一个账号只能登录一个设备
2022/04/19 Redis