Numpy 理解ndarray对象的示例代码


Posted in Python onApril 03, 2020

  numpy作为python科学计算的基础模块,支撑起了pandas、matplotlib等使用。其中,ndarray作为numpy的重要使用对象不得不研究理解一下。

  ndarray,存储单一数据类型的多维数组结构,在内存中连续存在,以行索引和列索引的方式标记数组中的每一个元素。采用预编译好的C语言代码,性能上的表现十分不错。

1、ndarray的数据结构

Numpy 理解ndarray对象的示例代码

2、ndarray的创建

numpy主要有以下几种方式创建数组。除此之外,其他过程也可能产生数组,比如:cv2.imread读取图片,返回数组。

np.array() # 传入类数组数据结构,list,tuple等,或者其他嵌套序列。返回的维度依据传入的数据而定
np.linspace() # 根据给定的间距生成等差序列,指定元素数量,返回一维数组
np.arange()# 根据给定的间距生成等差序列,指定步长。返回一维数组
np.ones() # 根据传入的shape,返回一个元素全是1的数组
np.zeros() # 根据传入的shape,返回一个元素全是0的数组
np.full() # 根据传入的shape和value,返回一个元素全是value的数组,比前面两个灵活
np.empty() # 根据传入的shape,返回一个元素全是随机化而不是空值的数组
np.genfromtxt() # 从文本文件读取生成一个数组

3、ndarray的抽象理解

先创建一个三个数组,一维、二维、三维。

arr1 = np.arange(3)
arr1
array([0, 1, 2])
---------------------------------------------------------
arr2 = np.arange(9).reshape(3,3)
arr2
array([[0, 1, 2],
    [3, 4, 5],
    [6, 7, 8]])
----------------------------------------------------------
arr3 = np.arange(27).reshape(3,3,3)
arr3
array([[[ 0, 1, 2],
    [ 3, 4, 5],
    [ 6, 7, 8]],

    [[ 9, 10, 11],
    [12, 13, 14],
    [15, 16, 17]],

    [[18, 19, 20],
    [21, 22, 23],
    [24, 25, 26]]])

在python中的arr结构如上所示。我们将其形象化表示出来,如下图。

一维数组只有一个维度,也叫rank,只有一个axis轴,axis=0。
二维数组有两个维度,有两个axis轴,axis=0和1。
三维数组有三个维度,有三个axis轴,axis=0、1、2。

Numpy 理解ndarray对象的示例代码

我们直接在三维上执行索引操作,来理解ndarray的排布。

arr3[1,2,1]
输出16

  索引[1,2,1]依次从高维到低维,从axis轴2到1到0,1指三维上的第2个元素,即上图中间的数组,是一个二维数组。2指二维上的第3个元素,是一个一维数组。1值一维上的第2个元素。也可以试着从轴方向去理解索引的原理。
可以自己操作一下下面索引代码,看看出结果。

arr3[3,3,2]

  不同维度的ndarray shape理解如下。可以通俗的认为是从点带面,再到块。

Numpy 理解ndarray对象的示例代码

4、ndarray的操作

  主要有索引、切片、过滤等,后续细谈。只要理解了ndarray,操作其实很简单。

Refer:
[1] https://danzhuibing.github.io/py_numpy_ndarray.html
[2] https://www.geeksforgeeks.org/numpy-ndarray/

到此这篇关于Numpy 理解ndarray对象的示例代码的文章就介绍到这了,更多相关Numpy ndarray对象内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 文件重命名工具代码
Jul 26 Python
python数据结构之二叉树的建立实例
Apr 29 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
Python2中的raw_input() 与 input()
Jun 12 Python
python正则表达式之作业计算器
Mar 18 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
利用Python如何批量更新服务器文件
Jul 29 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
Python3运算符常见用法分析
Feb 14 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 #Python
Django自定义列表 models字段显示方式
Apr 03 #Python
使用Django清空数据库并重新生成
Apr 03 #Python
Python基础类继承重写实现原理解析
Apr 03 #Python
Django实现列表页商品数据返回教程
Apr 03 #Python
Python第三方库的几种安装方式(小结)
Apr 03 #Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 #Python
You might like
php json_encode奇怪问题说明
2011/09/27 PHP
php下载文件的代码示例
2012/06/29 PHP
php支付宝接口用法分析
2015/01/04 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
PHP创建XML接口示例
2019/07/04 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
javascript取消文本选定的实现代码
2010/11/14 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
jqueryUI tab标签页代码分享
2017/10/09 jQuery
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
python如何处理程序无法打开
2020/06/16 Python
python如何导入依赖包
2020/07/13 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
WiFi云数码相框:Nixplay
2018/07/05 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
餐饮收银员岗位职责
2014/02/07 职场文书
质量保证书
2015/01/17 职场文书