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中的Matplotlib模块入门教程
Apr 15 Python
python Django批量导入不重复数据
Mar 25 Python
Python入门学习指南分享
Apr 11 Python
Python 读写文件的操作代码
Sep 20 Python
老生常谈python中的重载
Nov 11 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
Python统计时间内的并发数代码实例
Dec 28 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
python/golang 删除链表中的元素
Sep 14 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
python遍历路径破解表单的示例
Nov 21 Python
超详细Python解释器新手安装教程
May 10 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将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
页面中js执行顺序
2009/11/09 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
python3图片转换二进制存入mysql
2013/12/06 Python
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
中海讯通笔试题
2015/09/15 面试题
实习自荐信
2013/10/13 职场文书
生物专业个人自荐信范文
2013/11/29 职场文书
三八活动策划方案
2014/08/17 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
大学三好学生主要事迹范文
2015/11/03 职场文书
python基础之文件处理知识总结
2021/05/23 Python
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
LeetCode189轮转数组python示例
2022/08/05 Python