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 相关文章推荐
python3中set(集合)的语法总结分享
Mar 24 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
对pandas处理json数据的方法详解
Feb 08 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
Python CVXOPT模块安装及使用解析
Aug 01 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
opencv 分类白天与夜景视频的方法
Jun 05 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连接Oracle数据库
2006/10/09 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
基于JQuery制作的产品广告效果
2010/12/08 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
Linux的主要特性
2016/09/03 面试题
打架检讨书500字
2014/01/29 职场文书
学历公证委托书
2014/04/09 职场文书
党务公开方案
2014/05/06 职场文书
环保志愿者活动总结
2014/06/27 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
2015年教师节感言
2015/08/03 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技