一、基础语法
1.变量
python是“动态类型语言”的编程语言。用户无需明确指出x的类型是int。
x=10 #初始化
print(x) #输出x
x=100 #赋值
print(x)
print(type(x))#输出x的类型<class 'int'>
2.算术计算
>>>4*5
>20
>>>3**3#**表示乘方(3的3次方)
>27
在pyhon3.x以后的版本中,整数除以整数的结果是小数(浮点数)
3.print用法
截取字符串
var1="RunOob"
print("var1[:3]",var1[:3])#表示截取下标3以前(不包括3)的
print("var1[2:5]",var1[2:5])
换行问题
for i in range(len(list1)):
print(list1[i],end=' ')
#py输出是默认换行的,end=' '可以让输出内容在一行,也可以控制间隔
print()
for item in list4:
print(item,"!!",end=" ")#再次说明''和""都一样
print()
x=100
y=200
print(x,y)#使用,分割也可以让输出在一行显示
4.列表
# #列表✅✅
list1 = ['Google', 'RunOob', 1997, 2000]#异构列表,意思是包含多种类型的数据。
list2 = [1, 2, 3, 4, 5 ]#同构
list3 = ["a", "b", "c", "d"]#双引号还是单引号看个人风格,python都一样。保存一致就行
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
##列表支持拼接、嵌套
list2.append(6)
list3.extend(list4)
#给列表每个元素加上!
for i in range(len(list3)):
list3[i]+='@'
print(list3[i],end=" ")
5.元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号(),列表使用方括号[]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
tup1 = ('kfc', 'McDonald', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])
##输出结果😀
#tup1[0]: kfc
#tup2[1:5]: (2, 3, 4, 5)
6.字典
以键值对的形式存储数据,类似C++中的map。就像《新华字典》那样,把单词和它的含义对应存储起来。
用花括号{}定义。
food={'kfc':50,'mcdonald':60}#生成字典
print (food['kfc'])#访问元素
#输出50
7.if语句
hungry=True#必须大写
if hungry:
print("eat kfc,v me 50")
else:
print("i am not hungry")
8.for语句
输出列表中元素,格式for…in…
for i in [1,2,3,4,5]:
print(i,end=" ")
9.函数
def eat():
print("eat kfc,v me 50")
eat()
10.类
这里我们定义了一个新类Man。类Man生成了实例对象m。
它的构造函数(初始化方法)会接收参数name和age,然后用这个参数初始化实例变量self.name和self.age。实例变量是存储在各个实例中的变量。
class Man:
def __init__(self,name,age):#构造函数
self.name=name
self.age=age
print("初始化!")
def hello(self):
print("%s今年%d岁了" %(self.name,self.age))
#或 注意这两种不同的写法
print("hello "+self.name+" age="+str(self.age))
def goodbye(self):
print("goodbye "+self.name)
m=Man("jack",11) #实例化
m.hello()
m.goodbye()
- 在上面的例子中,self 是一个指向类实例的引用,它在 __ init __ 构造函数中用于初始化实例的属性,也在 hello方法中用于访问实例的属性。通过使用 self,你可以在类的方法中访问和操作实例的属性,从而实现类的行为。
- self 代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
二、常用库
1.数值计算NumPy
1.1 导入NumPy
import numpy as np
将numpy作为np导入,相当于起个简称
1.2 生成NumPy数组
需要使用np.array()方法。它接收Python的列表作为参数,生成NumPy数组(numpy.ndarray)
list1=[1,2,3,4,5]
np_1=np.array(list1)
print(np_1)
print(type(np_1))
#[1 2 3 4 5]
#<class 'numpy.ndarray'>
1.3 算术运算
NumPy 数组:元素之间用空格分隔,打印时格式化为 [元素1 元素2 元素3 …]
list1=[1,2,3]
list2=[4,5,6]
np_1=np.array(list1)
np_2=np.array(list2)
print(np_1+np_2)
数组np_1和数组np_2的元素个数相同时,可以对各个元素进行算术运算。个数不同则会报错,所以元素个数保持一致非常重要。
list1=[1,2,3]
list2=[4,5]
np_1=np.array(list1)
np_2=np.array(list2)
print(np_1+np_2)#list1和list2一个是3个,一个是2个,报错
除此以外,还可以将NumPy数组和标量进行运算
a=2
print(np_1/a)
print(np_2*a)
1.4 N维数组
在数学上,我们把一维数组称为向量,二维数组称为矩阵。另外,可以将一般化之后的向量或矩阵统称为张量。本章将三维及以上的称为“张量”或“多维数组”
数组实例
A=np.array([list1,list2])
print(A)
print(A.shape)
- 如何理解NumPy中的维度非常重要!此部分内容参考NumPy中的维度(dimension)、轴(axis)、秩(rank)的含义
维度即为轴。那什么是秩(rank)?它是指轴的数量,或者维度的数量,是一个标量。
- 对于二维数组而言,以坐标系为例,有x轴和y轴。
- 三维数组就是x,y,z三个轴。
数组 [1,2,3], 它的维度是1,也就是有一个轴,这个轴的长度是3,而它的秩也为1。
list1=[1,2,3]
list2=[4,5,6]
list3=[7,8,9]
list4=[10,11,12]
A=np.array([list1,list2,list3,list4])
print(A)
print(A.shape)
结果
A=np.array([[list1,list2],[list3,list4]])
(2,2,3)相当于有2张2*3的矩阵一前一后对应摆放(想象立体的感觉)。
1.5 广播
在Numpy中,形状不同的数组之间也可以进行运算。
例如下图所示,2x2的矩阵和标量10之间进行乘法运算,标量10被扩展成2*2的形状,然后再与矩阵A进行乘法运算。这个巧妙的功能称为广播。
虽然广播机制非常有用,但它也有一些限制。如果两个数组的维度不兼容,即它们在任何一个维度上都不匹配,并且没有任何一个维度等于1,那么NumPy将无法应用广播机制,并抛出异常。
1.6 访问元素
元素的索引从0开始。
print(A[0])#第0行
print(A[1])#第1行
print(A[1][2])#下标(1,2)的元素
[[1 2 3]
[4 5 6]]
------
[1 2 3]
[4 5 6]
6
也可以用for循环遍历
for i in A:
print(i)
------
[1 2 3]
[4 5 6]
使用不等号运算符
print(A>5)
[[False False False]
[False False True]]
2.可视化Matplotlib
用于绘制图形的库,在深度学习中,图形绘制和数据可视化非常重要。
2.1简单图形
使用Matplotlib中的pylot模块绘制sin函数曲线
import numpy as np
import matplotlib.pyplot as plt
#生成数据
x=np.arange(-5,5,0.1)#以0.1为单位,生成-5到5的数据
y=np.sin(x)
#绘制图形
plt.plot(x,y)
plt.show()
追加cosx
import numpy as np
import matplotlib.pyplot as plt
#生成数据
x=np.arange(-5,5,0.1)#以0.1为单位,生成-5到5的数据
y1=np.sin(x)
y2=np.cos(x)
#绘制图形
plt.plot(x,y1,label='sin(x)')
plt.plot(x,y2,label='cos(x)',linestyle='--')#虚线绘制
plt.xlabel('x')
plt.ylabel('y')
plt.title('sin and cos')
plt.legend()#显示图例
plt.show()
2.2显示图像
pyplot中还提供了用于显示图像的方法imshow()。并且使用image模块的imread()读入图像。
import matplotlib.pyplot as plt
from matplotlib.image import imread
img=imread('kon.jpg')#读入图像
plt.imshow(img)
plt.show()
灰度处理
gray_img = 0.2989 * img[..., 0] + 0.5870 * img[..., 1] + 0.1140 * img[..., 2]
plt.imshow(gray_img, cmap='gray')