首页 飞桨领航团 帖子详情
【AI达人养成营】学习笔记,尚未整理
收藏
快速回复
飞桨领航团 其他AI达人创造营 302 1
【AI达人养成营】学习笔记,尚未整理
收藏
快速回复
飞桨领航团 其他AI达人创造营 302 1

只可惜到了期末,笔记写了但还没得及系统性的整理,而且后面关键的图像识别部分也没时间去学,希望等放假了再花时间好好学;(

笔记2

列表
random() 方法返回随机生成的一个实数,它在[0,1)范围内
import random
random.random()
randint函数,返回指定范围的一个随机整数,包含上下限

len获取列表长度

extend
append

切片的语法:[起始:结束:步长]

sort自动排序

reverse原地反转列表元素顺序

列表.sort(reverse=Ture)

count查找列表中的元素出现次数

index(start.end)获取列表中指定元素的索引值,指定查找的开始和结束位置
故替换指定元素的操作为 列表[hero.index("元素")]=替换对象

copy 拷贝一个列表 ,浅拷贝,处理一维列表,难以处理嵌套列表
列表1 = 列表2.copy() 把列表2的元素复制给列表1
切片的方法也可以办到
y =x[:]

列表加法
列表乘法,将列表内元素重复若干次,类似拷贝(拷贝引用),故列表使用*后
list = [[]]*3
list.append[3]
结果输出为[[3],[3],[3]]

print()换行
print(ea,end=' ')输出时添加空格

range返回一个可迭代对象
range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

创建多维列表的方法(创建一维列表,再往一维列表里的每一个元素塞一个列表进去)
A=[None]*3
for i in range(3):
A[i] = [None] * 2

S = [[0]*3 for i in range(3)]

is返回是否指向同一个对象(位置)的运算符,故两个相同内容的列表使用is返回内容为is
s =1
a =1
s is a(返回ture)

python的变量不是一个盒子,而是对内容进行引用,
故浅拷贝嵌套循环时(被拷贝对象改变元素,拷贝对象也会跟着改变)
原因就是因为浅拷贝的只是其引用

深拷贝 需要导入模块 import copy
y = copy.deepcopy(x)

x = [i*2 for i in x] 列表推导式(将列表x 中每一个元素的值乘2)
y = [c*2 for c in "nmd"] 输出["nn"","mm","dd"]
还可以添加一个if条件用于筛选x = [i*2 for i in x if i%2] (将列表x 中每一个元素的值如果能被2整除则乘2)
循环和列表推导式的区别是,前者逐个修改列表的值,后者创建一个新列表
在赋值为原先的变量名

ord()将单个字符串转化为对应编码

笔记3面向对象

class Hero(object):
def __init__(self, name, init_health=100, init_attack=10, alive=True):
# 构造函数/初始化方法 在创建对象时候执行
self.name = name # 为对象绑定属性
self.health = init_health
self.attack = init_attack
self.alive = True

self.birth()

def attack_enemy(self, enemy):
# 对象的方法 用本类创建的所有对象都有这个方法
enemy.health -= self.attack
if enemy.health <= 0:
enemy.alive = False
enemy.health = 0
print(f'{enemy.name} 死亡')

def upgrade(self):
self.attack *= 1.1
self.health *= 1.1

def birth(self):
print(f'我,{self.name},出生了!')

定义的里面,在属性前加两个下划线是私有属性,即只能在类里修改
在外面若要调用查看,就可以多写一个函数,如
def get_attack(self)
return self.__attack
私有属性的原理类似于改名字(不同的解释器改的不同)

Python内置类属性
__dict__ : 类的属性(包含一个字典,由类的数据属性组成)
__doc__ :类的文档字符串
__name__: 类名
__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

笔记4文件读取

file = open("文件名")打开
text = file.read()读取
ptint("")
file.close()关闭文件 忘记关闭文件会造成系统资源消耗,影响后续编写内容

以只读方式打开时除了指定模式为"r"之外还有指定在python中以要打开
的文件的编码相同的方式打开,也就是让python不以默认的 gbk方式打
开,而是以我们指定的 utf-8 打开:

file = open(r"C:\Users\有人单推亚瑟摩根吗\Desktop\新建文本文档.txt",encoding='utf-8')
files = file.read()
print(files)

open ()打开文件的方式
r只读,指针放在开头,文件不存在则抛出异常
w只写,指针放在开头,文件存在会被覆盖,不存在创建新文件
a追加,指针放在结尾,文件存在则指针放在结尾,不存在将创建新文件写入
r+读写,指针放在开头,文件不存在则抛出异常,先读后写或先写后读,影响指针位置
w+读写,文件存在会被覆盖,不存在创建新文件
a+读写,文件存在则指针放在结尾,不存在将创建新文件写入

readline一行一行的读取(一次读取一行)

笔记5 图像

在编程的过程中发现plt.imshow()不能同时显示两张照片,
如果有两条plt.imshow()语句处于一前一后的位置,那么
程序运行后只会显示后面的图片。如果想让每一张图片都
显示出来,需要在每一个plt.imshow()语句后面加上plt.show()语句。

图片负变换
亮度变换函数在数学上定义为:

s=T(r)
其中r是导入图片的像素,s是输出图片的像素。T是一个转换函数,它将r的每个值映射到s的每个值。

负变换,即变换颠倒。在负变换中,输入图像的每个值从L-1中减去并映射到输出图像上。

在这种情况下,使用以下公式完成转换:

s=(L–1)–r
因此每个值减去255,最终效果是,图片原来较亮的部分变暗,较暗的部分变亮,这就产生了负变换。

negative = 255 - pic # neg = (L-1) - img
plt.figure(figsize = (6,6))
plt.imshow(negative);
plt.axis('off');
程序补充
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import cv2
path = "baidu_bear.png" # 图片路径
image = Image.open(path) #读取图片
image = np.array(image)

0
收藏
回复
全部评论(1)
时间顺序
55258525801tgo
#2 回复于2021-12

这功能不完爆某

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户