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使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
初步理解Python进程的信号通讯
Apr 09 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python列表解析配合if else的方法
Jun 23 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
Python编程中flask的简介与简单使用
Dec 28 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
Python 防止死锁的方法
Jul 29 Python
python计算auc的方法
Sep 09 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中实现Bloom Filter算法
2015/03/30 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
extjs render 用法介绍
2013/09/11 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
python中list循环语句用法实例
2014/11/10 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python实现网站微信登录的示例代码
2019/09/18 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
Django models filter筛选条件详解
2020/03/16 Python
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
Order by的几种用法
2013/06/16 面试题
上学迟到的检讨书
2014/01/11 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
个人年终总结怎么写
2015/03/09 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers