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 相关文章推荐
pygame播放音乐的方法
May 19 Python
python中的set实现不重复的排序原理
Jan 24 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
pyshp创建shp点文件的方法
Dec 31 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
Jan 02 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
解决pip install psycopg2出错问题
Jul 09 Python
Pycharm安装python库的方法
Nov 24 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 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
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
php多进程应用场景实例详解
2019/07/22 PHP
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
java中两个byte数组实现合并的示例
2018/05/09 Python
详解Python发送email的三种方式
2018/10/18 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
用python实现刷点击率的示例代码
2019/02/21 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
django 信号调度机制详解
2019/07/19 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
浅谈django channels 路由误导
2020/05/28 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
初二物理教学反思
2014/01/29 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书
与美同行演讲稿
2014/09/13 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
详解 TypeScript 枚举类型
2021/11/02 Javascript