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中用函数作为返回值和实现闭包的教程
Apr 27 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
windows下python连接oracle数据库
Jun 07 Python
学习python可以干什么
Feb 26 Python
Python程序包的构建和发布过程示例详解
Jun 09 Python
Python 自由定制表格的实现示例
Mar 20 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
python 使用事件对象asyncio.Event来同步协程的操作
May 04 Python
Python pip安装模块提示错误解决方案
May 22 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
python中pow函数用法及功能说明
Dec 04 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
for循环连续求和、九九乘法表代码
2012/02/20 PHP
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
Bootstrap表单布局
2016/07/19 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
Python中的字典遍历备忘
2015/01/17 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
Python2与Python3的区别实例分析
2019/04/11 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
Python如何使用函数做字典的值
2019/11/30 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
深入了解Python 变量作用域
2020/07/24 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
机械设计及其自动化专业推荐信
2013/10/31 职场文书
测绘工程系学生的自我评价
2013/11/30 职场文书
就业协议书的作用
2014/04/11 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
党员民主评议自我评价
2014/10/20 职场文书
支教个人总结
2015/03/04 职场文书