Python 3零基础到实战

  原来用Matlab(octave)做机器学习的居多,吴恩达老师以前在机器学习课也是用matlab(octave)。时代在进步,近些年,python已经成为机器学习热门的工具,吴老师的深度学习课程已经用python3.6了。技术在发展,识时务者为俊杰,为了理解和应用机器学习技术,以及进行数据分析,需要学习 python。
  

Python具有以下特点:

  • 可移植性
  • 丰富的库和扩展
  • 编程特性
  • 面向过程
  • 面向对象
  • 函数式编程

1.Python基本数据类型

(1)Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

在 Python 中,变量就是变量,它没有类型,我们所说的”类型”是变量所指的内存中对象的类型。

等号(=)用来给变量赋值。
(2)标准数据类型
Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)

2.Python的print语句

表达式语句和 print() 函数、使用文件对象的 write() 方法、str.format() 函数来格式化输出值使输出的形式更加多样、repr() 或 str() 函数来实现将输出的值转成字符串

print("Hello, World!")

3.Python的注释

单行注释以 # 开头,多行注释用三个单引号 ”’ 或者三个双引号 “”” 将注释括起来

4.Python的变量

变量存储在内存中的值。在创建变量时会在内存中开辟一个空间。

5.Python中raw字符串与多行字符串

(1)raw字符串(原始字符串)
在字符串前面加个前缀r,表示这是一个 raw 字符串,里面的字符就不需要转义了
(2)多行显示
除了可以使用单引号’ ‘、双引号” “表示一个字符串,还可以使用三引号来表示一个字符串

”’ ”’。单引号和双引号不能用来表示多行显示,而三引号可以
(3)字符串类型
str类型
str类型采用的ASCII编码,也就是说它无法表示中文。

6.Python当中的Unicode字符串

unicode类型采用unicode编码,能够表示任意的字符

7.Python中的整数和浮点数

(1)整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
(2)浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)

8.Python中的布尔类型

bool类型的变量
一个逻辑表达式,其实最终是代表了一个bool类型的结果首先需要捋清常用的关系(比较)运算符、逻辑运算符> 、>=、<、<=、==这些为关系运算符

9.Python中的List

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。

list1 = ['ListDemo', 'ListTest', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];

10.Python中的tuple

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

tup1 = ('tupledemo', 'tupletest', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"

11.Python中的条件判断和循环

(1)if语句

age = 20
if age >= 18:
    print 'your age is', age
    print 'adult'
print 'END

(2) if-else

 if age >= 18:
    print 'adult'
else:
    print 'teenager'

(3) if-elif-else

if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
elif age >= 3:
    print 'kid'
else:
    print 'baby'

elif 意思就是 else if

(4)for循环

 L = ['Adam', 'Lisa', 'Bart']
print L[0]
print L[1]
print L[2]
L = ['Adam', 'Lisa', 'Bart']
for name in L:
    print name

(5)while循环

 N = 10
x = 0
while x < N:
    print x
    x = x + 1

(6)break退出循环

 sum = 0
x = 1
while True:
    sum = sum + x
    x = x + 1
    if x > 100:
        break
print sum

(7)continue继续循环

 L = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in L:
    sum = sum + x
    n = n + 1
print sum / n
for x in L:
    if x < 60:
        continue
    sum = sum + x
    n = n + 1

(8)多重循环

 for x in ['A', 'B', 'C']:
    for y in ['1', '2', '3']:
        print x + y

12.Python中的dict

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式:

d = {key1 : value1, key2 : value2 }

13.Python中的set

集合中包含一系列的元素,在Python中这些元素不需要是相同的类型,且这些元素在集合中是没有存储顺序的
集合的表示方法是花括号,这与dict 是一样的,可以通过括号或构造函数来初始化一个集合,如果传入的参数有重复,会自动忽略:

 {1,2,"hi",2.23}
{2.23, 2, 'hi', 1}
 set("hello")
{'l', 'h', 'e', 'o'}

14.Python中的函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

15.Python中对字符串切片

切片操作(slice)可以从一个字符串中获取子字符串(字符串的一部分)。我们使用一对方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片,格式:
[start:end:step]

16.Python中的迭代

在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。
在Python当中的迭代是很抽象的,它与java不同,它是通过for..in来实现的:

for i in range(1,101):
    if i % 7 ==0:
        print (i)

实战:使用python简单处理图片

操作:打开、显示和保存图像,图像通道、几何变换、裁剪

(1)图片的打开与显示

from PIL import Image
img=Image.open('d:/test.png')
img.show()

使用的是Pillow是由PIL fork而来,因此还是要从PIL中进行import. 使用open()函数来打开图片,使用show()函数来显示图片。

图片显示方式是调用操作系统自带的图片浏览器来打开图片

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/test.png')
plt.figure("demo")
plt.imshow(img)
plt.show()
pip install matplotlib

不需要figure默认是带axis,进行关闭

plt.axis('off')

打开图片后,可以使用一些属性来查看图片信息

print img.size  #图片的尺寸
print img.mode  #图片的模式
print img.format  #图片的格式

(2)图片的保存
img.save(‘d:/demo.jpg’)
不仅能保存图片,还是转换格式jpg
(3)图像通道
①彩色图像转灰度图

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg')
gray=img.convert('L')
plt.figure("beauty")
plt.imshow(gray,cmap='gray')
plt.axis('off')
plt.show()

② 通道分离与合并

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg')  #打开图像
gray=img.convert('L')   #转换成灰度
r,g,b=img.split()   #分离三通道
pic=Image.merge('RGB',(r,g,b)) #合并三通道
plt.figure("beauty")
plt.subplot(2,3,1), plt.title('origin')
plt.imshow(img),plt.axis('off')
plt.subplot(2,3,2), plt.title('gray')
plt.imshow(gray,cmap='gray'),plt.axis('off')
plt.subplot(2,3,3), plt.title('merge')
plt.imshow(pic),plt.axis('off')
plt.subplot(2,3,4), plt.title('r')
plt.imshow(r,cmap='gray'),plt.axis('off')
plt.subplot(2,3,5), plt.title('g')
plt.imshow(g,cmap='gray'),plt.axis('off')
plt.subplot(2,3,6), plt.title('b')
plt.imshow(b,cmap='gray'),plt.axis('off')
plt.show()

(4)裁剪图片
从原图片中裁剪感兴趣区域(roi),裁剪区域由4-tuple决定,该tuple中信息为(left, upper, right, lower)。 Pillow左边系统的原点(0,0)为图片的左上角。坐标中的数字单位为像素点。

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('d:/ex.jpg')  #打开图像
plt.figure("beauty")
plt.subplot(1,2,1), plt.title('origin')
plt.imshow(img),plt.axis('off')

box=(80,100,260,300)
roi=img.crop(box)
plt.subplot(1,2,2), plt.title('roi')
plt.imshow(roi),plt.axis('off')
plt.show()

用plot绘制显示出图片后,将鼠标移动到图片上,会在右下角出现当前点的坐标,以及像素值。
(5)几何变换
Image类有resize()、rotate()和transpose()方法进行几何变换。

①图像的缩放和旋转

dst = img.resize((128, 128))
dst = img.rotate(45) # 顺时针角度表示

②转换图像

dst = im.transpose(Image.FLIP_LEFT_RIGHT) #左右互换
dst = im.transpose(Image.FLIP_TOP_BOTTOM) #上下互换
dst = im.transpose(Image.ROTATE_90)  #顺时针旋转
dst = im.transpose(Image.ROTATE_180)
dst = im.transpose(Image.ROTATE_270)

transpose()和rotate()没有性能差别。

总结:

Python除非项目的特别需求,纯粹学习新的技术建议直接学习3,Python3 不再向下兼容

你可能感兴趣的:(━═━═━◥,后端,◤━═━═━,Python)