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的即时标记项目练习笔记
Sep 18 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Python 迭代器工具包【推荐】
May 06 Python
深入理解Python装饰器
Jul 27 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 Python
python 类对象和实例对象动态添加方法(分享)
Dec 31 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
python 爬取学信网登录页面的例子
Aug 13 Python
python异常处理之try finally不报错的原因
May 18 Python
如何用Python绘制3D柱形图
Sep 16 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 Python
Python+DeOldify实现老照片上色功能
Jun 21 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实现微信支付之企业付款
2018/05/30 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
python搜索算法原理及实例讲解
2020/11/18 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
业务总经理岗位职责
2014/02/03 职场文书
中学生自我鉴定
2014/02/04 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
学校清明节活动总结
2014/07/04 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
绿色小区申报材料
2014/08/22 职场文书
趵突泉导游词
2015/02/03 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers