python代码基础知识总结(一)

一、理论简述

个人认为机器视觉可以作为人工智能的一大分支,尤其是随着深度学习、卷积神经网络、残差网络的出现,导致机器对图像识别精度高于了人类。因此,可以说机器视觉是人工智能的目前相对十分成熟的应用。

下面的表格从IPO层面介绍了各种领域之间的关系,这里分别包含的有数字图像处理(Digital Image Processing)、计算机视觉(Computer Vision)、计算机图形学(Computer Graphics)、人工智能(Artificial Intelligence)。

Python模拟计算机代码 python计算机代码大全_迭代

二、代码知识

如果想要利用计算机实现各种奇幻的操作,以及赋予其智能,至少目前来说,我们还需要编写代码来一步步实现它。而就目前而言python语言是编写Al程序的不二之选。所以我们下面会着重更新一下常用的python代码知识,以及python最常用的的module,比如pandas、numpy、matplotlib。
我们会着重介绍一些,新奇而又方便的代码段。并不从最基础的hello world开始。如果读者的基础较差,这里推荐一下python的学习网站,莫烦python,相信你可以从中学到很多有关Al的东西。传送门 我们首先介绍一下python的字符串格式化输出。

2.1 f-string格式化输出

region='焦作'
gdp=1619
growth=3.8
print(f'2021年1-9月{region}市的地区生产总值是{gdp}亿元,同比增长{growth}%')

2021年1-9月焦作市的地区生产总值是1619亿元,同比增长3.8%

#利用位置进行格式化输出
data=['焦作',1619,3.8]
print('2021年1-9月{0}市的地区生产总值是{1}亿元,同比增长{2}%'.format(*data))

2021年1-9月焦作市的地区生产总值是1619亿元,同比增长3.8%

#对于字典的字符串格式化输出
data_dict={'region':'焦作','gdp':1619,'growth':3.8}   
print('2021年1-9月{region}市的地区生产总值是{gdp}亿元,同比增长{growth}%'.format(**data_dict))

2021年1-9月焦作市的地区生产总值是1619亿元,同比增长3.8%

#另一种写法
print('2021年1-9月{}市的地区生产总值是{}亿元,同比增长{}%'.format(*data_dict.values()))

2021年1-9月焦作市的地区生产总值是1619亿元,同比增长3.8%

2.2 第一个高阶函数——map

def f(x):
    return x**2
a=list(map(f,[1,2,3,4,5]))
print(a)
#map可以与函数连用。从而实现对于可迭代对象处理元素值。
#此处注意列表经过函数f处理后返回一个迭代的类,可以用列表将元素返回。

[1, 4, 9, 16, 25]

b=map(str.upper,['a','b','c','d','e'])
#对字符函数处理要加str前缀
list(b)
print(b)

[‘A’, ‘B’, ‘C’, ‘D’, ‘E’]

2.3 第二个高阶函数——reduce

from functools import reduce
def f(x,y):
    return x*y
print(reduce(f,[1,2,3,4,5],15))
#k可以看到reduce函数会把迭代对象的结果当作x,下一个带迭代的元素当作y,以此类推,计算机结果。最后一位代表迭代对象的元素的初始值。

1800

#此外,对于一些简单的运算函数,而且我们在其他地方不准备继续使用它,我们可以匿名函数,lambda,改函数在迭代结束后,会自动释放内存。
print(reduce(lambda x,y:x+y,[1,2,3,4,5],20))

35

2.4 第三个高阶函数——filter

import math
def is_sqr(x):
    return math.sqrt(x)%1==0
#判断结果是否为整数。
print(list(filter(is_sqr,range(1,101))))

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
可以看到filter函数会返回所有条件为真的元素。

a='   hputhu   '
print(a)

’ hputhu ’

a.strip()
print(a)

‘hputhu’

data=['焦作','hpu','','  ']
def fn(s):
    return s and s.strip()
#返回含有非空元素
print(list(filter(fn,data)))

[‘焦作’, ‘hpu’]

2.5 第四个高阶函数——sorted

print(sorted([34,7,19,6,2,8]))

[2, 6, 7, 8, 19, 34]
对列表从小到大排序,返回列表类型

print(sorted([34,7,19,6,2,8],reverse=True))

[34, 19, 8, 7, 6, 2]
对列表从大到小排序,返回列表类型

print(sorted([34,7,19,-6,2,-8],key=abs))

[2, -6, 7, -8, 19, 34]
对元素值的绝对值从小到大排序。

date=['Year','Month','Day','hour','second']
print(sorted(date,key=str.lower))

[‘Day’, ‘hour’, ‘Month’, ‘second’, ‘Year’]
对元素根据元素首字母排序,不区分大小写。

2.6 第五个高阶函数——zip

month=['一月','二月','三月']
temperature=[6,8,16]
for i in range(0,3):
    print('%s,%d'%(month[i],temperature[i]))

一月,6
二月,8
三月,16

res=zip(month,temperature)
list(res)

[(‘一月’, 6), (‘二月’, 8), (‘三月’, 16)]

注意:以下代码来自Jupyter Notebook

2.6 生成器(generator)知识介绍

def range2(i):
    while i>0:
        yield i   #表明这是一个生成器
        i-=1
func=range2(9)
type(func)

generator
生成器实际上是一种元素的生成函数,它和普通函数的区别在于,生成器的返回值不是通过return语句返回的,而是通过yield语句。 也就是说生成器没有办法使用return语句的返回值

下面通过生成器来实现斐波那契数列

def fibonacci(xitems):
    n,a,b=0,0,1
    while n<xitems:
        yield b   #有yield语句,表明这是一个生成器
        a,b=b,a+b
        n=n+1
    return '输出完毕'

func=fibonacci(10)
next(func)

1
运行一次,输出结果为1.第二次为2,不断生成斐波那契数列的下一位。

2.7 迭代器(iterator)知识介绍

list1=['a','b','c','d','e','f']
list1

[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]

list.__next__()

AttributeError Traceback (most recent call last)
in
----> 1 list.next()

AttributeError: type object ‘list’ has no attribute ‘next

next(list1)

TypeError Traceback (most recent call last)
in
----> 1 next(list1)

TypeError: ‘list’ object is not an iterator

list2=iter(list1)
type(list2)

list_iterator

list2.__next__()

‘a’

list3=iter(list1)
type(list3)

list_iterator

next(list3)

‘a’

2.8 迭代器的升级—枚举器(enumerator)

list_a=['a','b','c','d','e']
new_a=enumerate(list_a)
for idx,val in new_a:
    print(idx,val)

0 a
1 b
2 c
3 d
4 e
可以看到返回元素值的同时,还返回元素的索引

list4=iter(list1)
list_enum=enumerate(list4)
type(list_enum)

enumerate

next(list_enum)

(0, ‘a’)

2.9 Python的装饰器

装饰器是一种可以修饰(修改)其他函数的函数,具有在不更改原函数的情况下拓展原函数的特性。

def add_text(func):  #装饰器函数
    def wrap():
        print('==this is Mr Zhao`s deep learning classroom==')
        func()
        print('==see you next day==')
    return wrap()
@add_text
def nihao():
    print('hahahahaha')

运行结果

==this is Mr Zhao`s deep learning classroom==
hahahahaha
==see you next day==