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脚本实现分析dns日志并对受访域名排行
Sep 18 Python
在Django的模板中使用认证数据的方法
Jul 23 Python
python更新列表的方法
Jul 28 Python
分享Python字符串关键点
Dec 13 Python
Python 类的特殊成员解析
Jun 20 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
解决Django加载静态资源失败的问题
Jul 28 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Django 构建模板form表单的两种方法
Jun 14 Python
python 利用zmail库发送邮件
Sep 11 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
详解Python中下划线的5种含义
Jul 15 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
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
PHP 魔术函数使用说明
2010/05/14 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
php函数连续调用实例分析
2015/07/30 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
深入分析js中的constructor和prototype
2012/04/07 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
python实现数据图表
2017/07/29 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
python实现简单颜色识别程序
2020/02/19 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
比利时买床:Beter Bed
2017/12/06 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
旅游网创业计划书
2014/01/31 职场文书
新闻学专业求职信
2014/07/28 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
管理失职检讨书
2015/05/05 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
六年级数学教学反思
2016/02/16 职场文书
《分数的意义》教学反思
2016/02/20 职场文书