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发送邮件功能实现代码
Jul 15 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
python调用API实现智能回复机器人
Apr 10 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
深入浅析Django MTV模式
Sep 04 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 curl请求信息和返回信息设置代码实例
2015/04/27 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
Python logging模块学习笔记
2014/05/24 Python
Python学习笔记(二)基础语法
2014/06/06 Python
python文件操作整理汇总
2014/10/21 Python
详解Python自建logging模块
2018/01/29 Python
详解Python中where()函数的用法
2018/03/27 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
医生进修自我鉴定
2014/01/19 职场文书
外语系毕业生求职自荐信
2014/04/12 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
应聘教师求职信
2014/07/19 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
2016春节家属慰问信
2015/03/25 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android