本文总结了使用Python进行机器视觉(图像处理)编程时常用的数据结构,主要包括以下内容:

数据结构

序列操作:索引(indexing)、分片(slicing)、加(adding)、乘(multipying)等

列表:创建、list函数、基本操作:赋值、删除、分片赋值、插入、排序等

元组:创建、tuple函数、基本操作

NumPy数组:创建数组、创建图像、获取形状、维度、元素个数、元素类型、访问像素、通道分离、使用mask

1. 数据结构

数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构。在Python中最基本的数据结构是序列(sequence)。序列中每个元素被分配一个序号——即元素的位置,也称为索引(index),第一个元素的索引是0,第二个是1,以此类推。

python包含6种內建序列,最常用的两种类型是:列表和元组。列表和元组的主要区别在于列表可以修改,元组不可以修改。而用于处理图像的基本数据结构是数组,由于Python标准库中的內建数组只能处理一维数组并且提供的功能较少,因此做编程时常使用NumPy模块的array()数组表示图像,并进行各类处理。

2. 通用序列操作

所有序列都可以进行某些特定操作,包括:索引(indexing)、分片(slicing)、加(adding)、乘(multipying)以及检查某个元素是否属于序列成员(成员资格),除此之外,python还有计算序列长度、找出最大元素和最小元素的內建函数。

(1)索引

序列中所有元素的编号都是从0开始递增。

>>>greeting = 'Hello'

>>>greeting[0]

'H'

>>>greeting[1]

'e'

所有序列都可以通过这种方式获取元素。最后一个元素的编号是-1

>>>greeting[-1]

'o'

如果一个函数调用返回一个序列,则可以直接对返回序列进行索引操作

>>>fourth = raw_input('Year: ')[3]

Year: 2016

>>>fourth

6

(2)分片

使用分片操作来方位一定范围内的元素。分片通过冒号隔开两个索引来实现。

>>>tag='Python web site'

>>>tag[9:30]

'"http://www.python.org '

>>>numbers=[1,2,3,4,5,6,7,8,9,10]

>>>numbers[3:6]

[4,5,6]

>>>numbers[0:1]

[1]

注意索引边界:第1个索引的元素包含在分片内,第2个索引的元素不在分片内,如果要索引最后一个元素

>>>numbers[-3:]

[8,9,10]

>>>print numbers[-1:]

[10]

这种方法同样适用于序列开始的元素:

>>>numbers[:3]

[1,2,3]

如果需要复制整个序列,可以将两个索引都置空:

>>>numbers[:]

[1,2,3,4,5,6,7,8,9,10]

我们还可以使用第三个参数设置分片的步长,下面代码为从numbers序列中选出从0到10,步长为2的元素

>>>numbers[0:10:2]

[1,3,5,7,9]

如果要将每4个元素中的第1个提取出来可以这样写

>>>numbers[::4]

[1,5,9]

步长为负数将向左提取元素,当使用负数作为步长时开始的点的索引必须大于结束点的索引

>>>number[8:3:-1]

[9,8,7,6,5]

>>>numbers[10:0:-2]

[10, 8, 6, 4, 2]

(3)序列相加

使用+运算符可以进行序列的连接操作:

>>>[1,2,3] + [4,5,6]

[1,2,3,4,5,6]

>>>'Hello, ' + 'world!'

'Hello, world!'

注意同种类型的序列才能连接到一起,列表和字符串是无法连接的。

(4)乘法

数字x乘以序列会生成新的序列。新序列中,原来的序列将被重复x次

>>>'pyhton' * 5

'pyhtonpyhtonpyhtonpyhtonpyhton'

>>>[42]*10

[42,42,42,42,42,42,42,42,42,42]

(5)None空列表和初始化

空列表可以通过两个中括号中间什么都不写表示[]

如果想创建一个占用 10个元素空间,却不包括任何有用内容的列表,可以用:

>>>[0]*10

None是一个Python的內建值,它的确切含义是这里什么都没有。

>>>[None]*10

(6)成员资格in

为了检查一个值是否在列表中,可以使用in运算符,返回布尔值真或假:

>>>permission = 'rw'

>>>'w' in permission

True

>>>'x' in permission

False

下面的例子,检查用户名和PIN码:

database = [

['albert', '1234'],

['dilbert','4242'],

['smith', '7524'],

['jones', '9843']

]

username = raw_input('User name: ')

pin = raw_input('PIN code: ')

if [username,pin] in database:

print 'Access granted'

运行结果:

User name: jones

PIN code: 9843

Access granted

(7)长度、最小值和最大值

內建函数len,min,max

>>>numbers[100,34,678]

>>>len(numbers)

3

>>>max(numbers)

678

>>>min(numbers)

34

>>>max(2,3)

3

>>>min(2,3,4,5)

2

3. 列表

(1)list函数

因为字符串不能像列表一样修改,所以有时候根据字符串创建列表很有用

>>>list('Hello')

['H','e','l','l','o']

list适用于所有类型的序列,而不只是列表。

(2)列表基本操作

元素赋值

>>>x=[1,1,1]

>>>x[1]=2

>>>x

[1,2,1]

删除元素

>>>x=[1,2,3]

>>>del x[1]

>>>x

[1,3]

(责任编辑:ioter)

python适合机器视觉_Python机器视觉编程常用数据结构与示例相关推荐

  1. Python机器视觉编程常用数据结构与示例

    Python机器视觉编程常用数据结构与示例 本文总结了使用Python进行机器视觉(图像处理)编程时常用的数据结构,主要包括以下内容: 数据结构 通用序列操作:索引(indexing).分片(slic ...

  2. python编程语言模块_Python基础编程常用模块汇总

    3.8 json模块重点 json模块是将满足条件的数据结构转化成特殊的字符串,并且也可以反序列化还原回去. 不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串.(比如Python的一个列 ...

  3. Python 基础(6)(常用数据结构)

    https://www.toutiao.com/a6634514748694069763/ 2018-12-14 08:10:00 常用数据结构 1)元组 元组是一种静态的数据结构,无法修改,若要修改 ...

  4. python udp通信_Python网络编程(三)

    回顾 在<Python进阶记录之网络编程(二)>中,我们介绍了UDP端口号的基本概念和作用以及Python中UDP服务端的端口绑定和简单创建.今天我们利用UDP server和UDP cl ...

  5. python高级应用_Python高级编程技巧

    Python 高级编程技巧 本文展示一些高级的 Python 设计结构和它们的使用方法.在日常工作中,你可以根据需要 选择合适的数据结构, 例如对快速查找性的要求. 对数据一致性的要求或是对索引的要求 ...

  6. python高性能写法_python高性能编程方法一

    阅读 Zen of Python,在Python解析器中输入 import this. 一个犀利的Python新手可能会注意到"解析"一词, 认为Python不过是另一门脚本语言. ...

  7. python npv 计算公式_Python numpy 中常用的数据运算

    Numpy 精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤.--<利用Python进行数据分析> Numpy(Numerical Python)是Python科学计 ...

  8. python 线程同步_Python并发编程-线程同步(线程安全)

    Python并发编程-线程同步(线程安全) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 线程同步,线程间协调,通过某种技术,让一个线程访问某些数据时,其它线程不能访问这些数据,直 ...

  9. python线程唤醒_Python 并发编程(一)之线程

    常用用法 t.is_alive() Python中线程会在一个单独的系统级别线程中执行(比如一个POSIX线程或者一个Windows线程) 这些线程将由操作系统来全权管理.线程一旦启动,将独立执行直到 ...

最新文章

  1. 微软经典案例系列课程(视频课程讲师:杨丹)
  2. HttpWebResponse 的问题
  3. 哪里有mysql认证_国内哪个城市可以考mysql认证
  4. TableCache设置过小造成MyISAM频繁损坏
  5. 青岛市新添智能服务平台 借力大数据智慧城市再扩容
  6. 新华三(H3C)校园招聘技术类笔试题2019
  7. Web程序设计(第三版)课后答案
  8. 服务器python环境安装
  9. QQ群邮件批量群发源码
  10. 手机端Alook浏览器手动抓取京东Cookie教程
  11. UVA - 11604 General Sultan 题解
  12. 汽车自动变速器的控制技术
  13. 密码包含-数字、大小写、特殊字符-正则表达式
  14. 梦想世界 2014年8月14日服务器维护公告,《命运之轮》停止运营公告
  15. 基于单片机的计算器系统设计(#0404)
  16. C/C++段错误问题排查和解决方法
  17. 普氏分析法-MATLAB工具箱函数
  18. Windows系统禁止软件、驱动阻止系统息屏、睡眠。
  19. HTTP状态码含义:428、429、431、511431状态码详解
  20. 001-windows下安装go及IDE

热门文章

  1. 市场部和销售部的区别
  2. 在windows下安装webpy
  3. 香肠派对电脑版_香肠派对2020先行服最新内测版(众神降临)-香肠派对2020先行服游戏下载v9.82...
  4. 卢伟冰为Redmi K50电竞版预热:相机拍照效果越来越出色
  5. 董明珠的“接班人”出现了?22岁董明珠女秘书火了!本人回应...
  6. 大V怒怼银行服务太差,一怒取走500万现金!上海银行回应了
  7. 苹果 AirPods 固件更新,这个新功能上线!
  8. 新年首发成功!SpaceX“猎鹰9号”火箭发射升空
  9. 90万餐饮商家全店五折 支付宝首次以数字生活平台身份参加双11
  10. 真狠!10000mAh超大电池手机发布,真的神机...