在学习python时我们面临的最大的问题是:当程序出现异常的时候,不知道应该如何处理?错误提示看不懂!看懂也不知道怎么做!

下面是入门Python需要学习的内容,一共是四个大课程:

  1. ​​Python系统化学习之路​​Python的学习路线
    人工智能领域中Python的应用
    Python的程序设计案例
  2. ​​初识Python​​认识python
    python语法之输入与输出
  3. ​​Python基础入门​​Numpy
    Pandas
  4. ​​Python程序设计基础学习与应用​​python命名规则
    字符串
    列表
    集合
    字典
    条件语句
    循环语句
    函数
    模块

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_人工智能

Python系统化学习之路

Python的学习路线,分为【语法基础】、【能力提升】、【技术进阶】、【项目实战】四个板块

知识点大纲,涵盖了25个专题和212个知识点

Python的学习路线

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_python_02

人工智能领域中Python的应用

人工智能体系结构

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_人工智能_03


人工智能技术矩阵

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_基础_04

Python的程序设计案例

GitHub地址:
​​​https://github.com/zhangziliang04/PythonStudy​

为了方便大家下载,我fork到了码云:
​​​https://gitee.com/zheng_bo_pu/PythonStudy​


制作词云

import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud

#1.课程名称
text = open('title.txt','r',encoding='utf-8').read()
#2.中文分词
cut_text = jieba.cut(text)
#3.空格切分
result = " ".join(cut_text)
# print(result)
# 4.生成词云l
wc = WordCloud(
font_path='msyhbd.ttc', #字体文件
background_color='white', #背景颜色
width=1000,
height=600,
max_font_size=100, #字体大小
min_font_size=20,
mask=plt.imread('python.jpg'), #背景图片
max_words=1000
)
wc.generate(result)
wc.to_file('result.png') #图片保存

#5.显示图片
plt.figure('title') #图片显示的名字
plt.imshow(wc)
plt.axis('off') #关闭坐标
plt.show()

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_学习_05

大家可以尝试更换title.txt文件以及python.jpg文件,当然simhei.ttf字体文件也是可以更换的

实时图像采集

# 实时:视频图像采集(opencv)
import cv2
cap = cv2.VideoCapture(0)
# 从视频流循环帧
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow("Frame", frame)
# 退出:Q
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 清理窗口
cv2.destroyAllWindows()

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_基础_06


人脸识别

尝试运行代码:

# 实时:实时人脸检测
import cv2
import dlib

# 基于5特征点的人脸检测
detector = dlib.get_frontal_face_detector()
win = dlib.image_window()
cap = cv2.VideoCapture(0)

# 从视频流循环帧
while cap.isOpened():
ret, frame = cap.read()
image = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
# 检测灰度帧中的人脸
dets = detector(image, 0)
print("检测到人脸数量: {}".format(len(dets)))
for i, d in enumerate(dets):
print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
i, d.left(), d.top(), d.right(), d.bottom()))
win.clear_overlay()
win.set_image(image)
win.add_overlay(dets)
cap.release()

发现报错了:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_人工智能_07


这里一定不要慌,仔细读一下就会发现是缺失了一个名为’dlib’的库,我们安装一下:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_百度_08


进度条加载完,出现successful就表示安装完成了

初识Python

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_基础_09

认识python

Python的意思是蟒蛇,源于作者喜欢的一部电视剧,是龟叔在1989年圣诞节期间,为了打发无聊的圣诞节而用C语言编写的一个编程语言,Python正式诞生于1991年

Python目前有两个版本, Python2和Python3 ,我们学习使用的是Python3版本

Python官网:
​​​https://www.python.org/​

关于Python的安装方法,大家可以查看我的这篇文章:
​Python入门_给小白的学习指南​​

python语法之输入与输出

打印语句print()

print("Hello World!")

print()方法自带换行

输入语句input()


人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_python_10


input()语句输入的内容是字符串类型

Python基础入门

Numpy

Python科学计算领域,几乎所有科学计算库都依赖NumPy,它有以下基本功能:

  • 强大的N维数组对象
  • 广播功能
  • 基于C语言,速度快
  • 线性代数、傅里叶变换和随机数能力

下面来看一下具体操作:

常用函数

import numpy as np

arr = np.array([1,2,3,4,5,6,7,8,9,10])
print(arr)
print(arr.max())
print(arr.min())
print(arr.sum())

这里的四个输出,分别对应着arr数组,arr数组的最大值、最小值以及数组元素之和:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_学习_11


下面看一下怎么改变arr数组的形状:

import numpy as np

arr = np.array([1,2,3,4,5,6,7,8,9,10])
print(arr.shape)
arr = arr.reshape(2,5)
print(arr.shape)

可以看到,数组原来的形状是(10,1),经过reshape(2,5)后,形状变成了(2,5)即五列两行:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_百度_12


我们来看一下二维数组是怎么求平均数的:

import numpy as np

arr = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
arr = arr.reshape(3,4)
print(np.average(arr))

得到的输出是6.5

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_百度_13


一维数组的取值与列表相同,这里就不过多阐述了,下面看看二维数组是怎么取值的:

import numpy as np

arr = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
arr = arr.reshape(3,4)
print(arr)
print(arr[0:2,2])

这里的"0:2"指的是取第一、二行,逗号后面的2表示的是第3个数,因为是从0开始计数的,所以取到了第一行和第二行的第三个数:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_人工智能_14


如果冒号前后没有指定,就会取全部行或列(左边对应行;右边对应列) 广播机制

import numpy as np

arr1 = np.array([1,2,3,4,5,6])
arr2 = 3 * arr1
arr3 = arr1 + arr2

print(arr1)
print(arr2)
print(arr3)

使用数组时,如果要同时对数组里的元素做四则运算,需要用到for循环,而numpy的广播机制免去了for循环:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_python_15

向量化计算

基本原则:

  • 最大程度不使用for循环
  • 尽量使用NumPy自带的函数
  • 多使用广播

下面是两个矩阵相乘:

import numpy as np

arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.array([[10,11,12,13],[14,15,16,17],[18,19,20,21]])
arr3 = np.dot(arr1,arr2)
print(arr1)
print(arr2)
print(arr3)

只有矩阵1的列数与矩阵2的行数相等时才能做矩阵乘法:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_python_16


这样的广播机制比起使用for循环来说,计算量是大大地减少了

Pandas

Pandas为Python提供了高性能、易使用的数据计算功能

使用Pandas读取数据

方式1:

import pandas as pd

data = [{'name':'小明','age':18,'sex':'male'},
{'name':'小王','age':20,'sex':'female'},
{'name':'小郑','age':20,'sex':'male'}]
df = pd.DataFrame(data)
print(df)

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_学习_17


方式2:

import pandas as pd

csv_data = pd.read_csv(r"C:\Users\Administrator\Downloads\results7.csv")
df = csv_data.head()
print(df)

csv文件内容:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_学习_18


读取csv文件:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_python_19


head()方法不带参数,默认显示前5行,使用tail()可以查看后五条数据

方式3:

import pandas as pd
import sqlite3

with sqlite3.connect( 'data.db') as conn:
new_data = pd.read_sq1_query('select * from class_4_data where age < 30;',conn)
print(new_data)

Pandas常用函数

以这段代码为基础举例:

import pandas as pd

data = [{'name':'小明','age':18,'sex':'male'},
{'name':'小王','age':20,'sex':'female'},
{'name':'小郑','age':20,'sex':'male'},
{'name':'无名氏','age':30,'sex':'unknow'}]
df = pd.DataFrame(data)

选择数据:

age = df['age']

查看"age"这个字段:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_python_20

age_even = df[df['age'] % 3 == 0]

选出年龄能被3整除的数据:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_人工智能_21


去重:

student = df['sex']. unique()

去掉重复的性别,返回一个数组:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_人工智能_22

unique_df = df.drop_duplicates('age', keep='first')

去掉第一个重复的数据:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_百度_23


如果把first改成last:

unique_df = df.drop_duplicates('name', keep='last')

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_百度_24


将保留最后一个重复的数据

分组(groupby):

gender = df.groupby('sex').size()

按照性别分组:

人工智能全栈学习路线之Python基础(百度云智学院学习笔记)_基础_25

Python程序设计基础学习与应用

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言

python命名规则

  • 变量名只能包含字母、数字和下划线
  • 变量名可以字母或下划线开头,但不能以数字开头
  • 变量名不能包含空格,但可使用下划线来分隔其中的单词
  • 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词
  • 变量名应既简短又具有描述性
  • 慎用小写字母I和大写字母0,因为他们可能被人错看成数字1和0

注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但还是要避免使用大写字母

字符串

字符串或串(String)是由数字、字母、下划线组成的一 串字符
字符串有多种形式,可以使用单引号(’…’),双引号("…") 来获得同样的结果
个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符

在人工智能应用开发过程中,我们往往需要根据文件路径读取文件,一般文件路径的格式为:
C:Windows\temp\readme.txt

对比上表,我们需要把\换成\才可以正确读取路径,于是有: C:\Windows\temp\readme.txt

我们知道的意义是作为转义字符,跟其他不同的字母组合具有不同的含义,那么我们只要取消\的转义功能就可以获取原来的路径字符串了。于是有: r"C:\Windows\templreadme.txt"

列表

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
列表可以修改,可以用于切片、增、删、改、查

列表的增加需要通过对象点方法调用内置的append方法,但是每次只能增加一个元素

与不可更改的字符串不同,列表是一个可以更改的类型

集合

集合Set是一个包含无序不重复的元素的集体

创建方法:
1).使用大括号{}或者set()函数创建集合;
2).注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字 典的。

在使用数据集进行机器学习训练时,当图像数据必须以list的形式输入时,为了避免图像数据的重复,可以利用集合去重。

集合可以通过update方法和add方法增加元素

字典

  • 字典是一种可变的容器,可以存储任意类型的数据
  • 字典中的每个数据都是用"键"(key)进行索引,而不像其他序列可以用下标来进行索引
  • 字典中的数据没有先后顺序关系,字典的存储是无序的
  • 字典中的数据以键(key)-值(value)对形式进行映射存储
  • 字典的键不能重复,且只能用不可变类型作为字典的键
  • 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一

条件语句

Python条件语句是通过一条或多条语句的执行结果(True或者False) 来决定执行的代码块

循环语句

Python for循环可以遍历任何序列的项目,另外一种执行循环的遍历方式是通过序列索引迭代

函数

在程序设计中,函数是组织好的,可重复使用的,用来实现单一, 或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
在前面的学习中我们已经知道Python提供了许多内建函数,比如print()。 但我们也可以自己创建函数,这被叫做用户自定义函数。

在Python中,定义一一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

模块

Python的强大还体现在"模块自信”上, 因为Python不仅有很强大的自有模块(或者包、库,比如为标准库),还有海量的第三方模块(或者包、库),任何人还都能自己开发模块(或者包、库),正是有了这么强大的"模块自信”,才体现了Python的优势所在。并且这种方式也正在不断被更多其它语言所借鉴。