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编码时应该注意的几个情况
Mar 04 Python
Python list操作用法总结
Nov 10 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
numpy.random.seed()的使用实例解析
Feb 03 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
对python中dict和json的区别详解
Dec 18 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
TensorFLow 变量命名空间实例
Feb 11 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
Python实现Appium端口检测与释放的实现
Dec 31 Python
Python Django 后台管理之后台模型属性详解
Apr 25 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语法(5)
2006/10/09 PHP
php中的一个中文字符串截取函数
2007/02/14 PHP
php学习之变量的使用
2011/05/29 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
跟我学Laravel之路由
2014/10/15 PHP
php实现计数器方法小结
2015/01/05 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
python3.5绘制随机漫步图
2018/08/27 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
教师研修随笔感言
2014/01/23 职场文书
家庭贫困证明
2014/09/23 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
酒店厨房管理制度
2015/08/06 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书