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 相关文章推荐
Django入门使用示例
Dec 12 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
对python中的argv和argc使用详解
Dec 15 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
python实现自动化上线脚本的示例
Jul 01 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
Python3 assert断言实现原理解析
Mar 02 Python
python opencv进行图像拼接
Mar 27 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
如何让python的运行速度得到提升
Jul 08 Python
详解Python内置模块Collections
Mar 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 图像函数大举例(非原创)
2009/06/20 PHP
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
PHP时间函数使用详解
2019/03/21 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
python温度转换华氏温度实现代码
2020/12/06 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
银行授权委托书范本
2014/10/04 职场文书
学习三严三实心得体会
2014/10/13 职场文书
安全检查汇报材料
2014/12/26 职场文书
土建施工员岗位职责
2015/04/11 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
工伤调解协议书
2016/03/21 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers