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二分法实现实例
Nov 21 Python
python编码总结(编码类型、格式、转码)
Jul 01 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
Python实现简单网页图片抓取完整代码实例
Dec 15 Python
Python简单生成随机数的方法示例
Mar 31 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
Dec 03 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
深入浅析python 中的self和cls的区别
Jun 20 Python
python Tornado框架的使用示例
Oct 19 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
深入理解Python中变量赋值的问题
2017/01/12 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
python爬虫 正则表达式解析
2019/09/28 Python
python实现广度优先搜索过程解析
2019/10/19 Python
Django ORM filter() 的运用详解
2020/05/14 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
自荐信格式技巧有哪些呢
2013/11/19 职场文书
2014年度培训工作总结
2014/11/27 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
Python打包为exe详细教程
2021/05/18 Python
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
常用的Python代码调试工具总结
2021/06/23 Python
Python实现聚类K-means算法详解
2022/07/15 Python