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和Python创建Json response的方法
Mar 26 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
Python命名空间的本质和加载顺序
Dec 17 Python
python3.6数独问题的解决
Jan 21 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
Python3 集合set入门基础
Feb 10 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
python与pycharm有何区别
Jul 01 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 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(codeigniter)安全性注意事项
2017/04/06 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
python实现探测socket和web服务示例
2014/03/28 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
python小程序实现刷票功能详解
2019/07/17 Python
在django模板中实现超链接配置
2019/08/21 Python
详解Python3 pickle模块用法
2019/09/16 Python
Python datetime模块使用方法小结
2020/06/18 Python
python支持多继承吗
2020/06/19 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
清洁工岗位职责
2014/01/29 职场文书
家电业务员岗位职责
2014/03/10 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL
mybatis 获取更新记录的id
2022/05/20 Java/Android