第二步 - 10分钟学完在深度学习中用到的python
·
一,基本的语法
变量初始化
name = "gaolingrengongzhinneng"
print(name)
列表
list = [1,2,3,4,5]
print(list)
print(list[2])
print(list[-1]) # -1在list中表示最后一个
字典 - 哈希表 dict 字典中要用到字符串来作为索引#key - value 根据key找value,
dict1 = {"name":"RUC", "age":18, 18:"去ruc读书"}
print(dict1["name"])
print(dict1[29])
二 分支语句
判断
a=3
if a==3:
print("正确的")
print("我也是属于a==3")
if a==4:
print("错误的")
else:
print("你知道a为几吗?")
A = None
if A==None:
print("A是空的")
三 循环
循环
for i in 范围 !!一定注意这里是范围,不能直接给数字
list1 = [1,2,3,4,5]
for i in list1:
print(i)
for i in range(10): #[0,10)
print(i)
for i in range(1, 10):
print(i)
for i in range(1,10,2): # 1是开头, 10是结尾, 2是步长
print(i)
dict1 = {"name":"RUCchenli", "age":29, 29:"2026年9月必去ruc读书"}
print(dict1) #单纯输出整个字典
分别输出key 和 value
for each in dict1:
print(each)
print(dict1[each])
while循环
i = 2
while i < 10:
print(i)
i+=1
四 列表(数组)
# 列表 - 切片 和插入 和删除
list1 =[0, 1, 2, 3, 4, 5]
for each in list1:
print(each)
切片
print(list1[1:4]) # 左开右闭的区间,找的是第二个到第四个
print(list1[0:4]) # 从第一个元素(下标0)到第四个元素 输出
print(list1[1: -1]) #从下标1的开始,输出到 倒数第二个
如果想从下标1的开始,输出到最后一个
print(list1[1:])
dict1 = {"name":"RUCchenli", "age":29, 29:"2026年9月必去ruc读书"}
list2 = [1, 2, dict1]
for each in dict1:
print(each)
删除
根据值删除
list2 = [0, 1, 2, 3, 4, 5]
print(list2)
list2.remove(3) 删除值为3的元素
print(list2)
根据下标删除
del list2[3] 删除下标为3的值 ,此时删除的应该是值为4的,因为刚刚3被删掉了
print(list2)
# 插入
list2.append(2) 在最后加上一个值为7的元素
print(list2)
list2.extend([8, 9, 10]) 在最后直接插入一个新的列表
print(list2)
在list初始化的时候,有种方便的操作是 循环后置
list2 = [i for i in range(10)]
print(list2)
五 数值运算及函数定义
加减乘除 传入 格式
a = 3
b = 2
print(a+b)
print(a//b) # 地板除,两个整型除完后向下取整
print(a**b) # a的b次方
返回a的平方
def myfun(A) :
C=A**2
return C
a = 3
print(myfun(a))
这里可以默认一个值为固定值,但是一定放后面
def myfun2(A, B=2):
C=A**B
return C
六 类的使用
类,模型
初始化
__init__ 一般会用这个函数初始化
通过self传播各个属性
class person():
def __init__(self, name, age):
self.name = name
self.age = age
def print_name(self):
print(self.name)
ali = person("li",29) #实例化
print(ali.name)
ali.print_name()
print(ali.print_name()) # 没有返回值,会输出None
继承
class superman(person): # 直接继承前者的属性
def __init__(self, name, age):
super().__init__(name, age)
self.fly_ = True;
def fly(self):
if self.fly_ == True:
print("我会飞~")
superli = superman("li~",29)
superli.fly()
七、矩阵的使用
#矩阵
import numpy as np
import torch
# tensor 张量
list1 =[
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]
]
print(list1)
转化为矩阵
array1 = np.array(list1)
print(array1) # 输出方式不一样
array2 = np.array(list1)
print(array2)
矩阵拼接
array3 = np.concatenate((array1, array2), axis=1) # 矩阵拼接 水平拼接 ,如果axis=0 是上下拼接
print(array3)
矩阵切片
print(array3[1:3, 1:3]) # 取下标1到下标3的行, 下标1到下标3的列
print(array3[:, :])
跳着切
idx = [1, 3]
print(array3[:, idx]) # 切片所有行, 下标1的列和 下标3的列
八、张量
import torch
import numpy as np
# 张量
list1 =[
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]
]
# print(list1)
#
# tensor1 = torch.tensor(list1)
# print(tensor1)
#
# array1 = np.array(list1)
# print(array1)
w = 3
# ========== 第一部分:创建【张量A】 ==========
x = torch.tensor(3.0) # 1. 在内存中创建了一个「值=3.0」的张量,命名为【张量A】
# 2. 把标签 x 贴到【张量A】身上
x.requires_grad_(True) # 给【张量A】开启梯度追踪 ✔️
w = torch.tensor(3.0, requires_grad=True) # 创建一个新的 值=3.0」的张量,赋值给w
y = x**2 + w
y.backward() # 对张量 x , w 求梯度,计算出 x.grad = 6.0 , w.grad =1.0
print(x.grad) # 打印的是【张量A】的梯度 → 6.0 ✔
print(w.grad)
# ========== 第二部分:创建【张量B】 ==========
x.grad = torch.tensor(0.0) # 1. 在内存中创建了一个「值=0.0」的全新张量,
# 2. 把标签 x 从【张量A】身上撕下来,重新贴到【张量B】身上
# 3. 【张量A】依然存在于内存中,它的梯度值6.0也依然存在!
y2 = x**2
# y2.backward()
print(x.grad)
# 直接创建张量
tensor1 = torch.ones((100,4)) # 创建一个全是1的张量
tensor2 = torch.zeros((10, 4)) # 10行4列的全是0的张量
tensor3 = torch.normal(0, 0.01, (10, 4)) # 平均数 ,标准差 ,(行数,列数)
# 张量求和
tensor4 = torch.ones((10,4))
sum1 = torch.sum(tensor4) # 求所有的和
sum2 = torch.sum(tensor4, dim=0) # 从上到下 行相加
sum3 = torch.sum(tensor4, dim=1) # 从左到右 列相加
sum4 = torch.sum(tensor4, dim=1, keepdim=True) # 从左到下 列相加 ,保持形状
print(tensor4)
print(sum4)
# 想知道张量的形状
print(tensor4.shape)
更多推荐

所有评论(0)