赞
踩
作用:1)提供了包管理与环境管理的功能;2)解决了多版本python并存问题;3)解决了第三方包安装问题。
安装完Anaconda后,需要软件换源,在Anaconda Powershell Prompt中:
(1)配置环境:文件–设置–项目:–python解释器–添加解释器–conda环境–Scripts/conda.exe–加载环境。
(2)自由调节字体大小的设置:设置–按键映射–搜索中输入font–双击减小/增加字体大小–选中间–设置快捷键。
(3)若环境直接装到C盘,可以改:右键anaconda–安全–编辑–将system权限都勾上。
#1)使用str()转为字符串:
name = "Alice"
age=30
print("My name is %s and I'm %d years old."%(name,age))
print("My name is {} and I'm {} years old.".format(name,age))
print(f"My name is {name} and I'm {age} years old.")
# 2)输出时控制精度
number=12.3456
print("%.2f"%number)
print("{:.2f}".format(number))
print(f"{number:.2f}")
#1)可指定循环次数
epoch=5
for i in range(epoch):
print(f"第{i}个数据处理完毕")
#2)可指定迭代对象
optimizers=["SGD","Adam","Mo","Ada"]
for i in optimizers:
print("正在使用",i,"进行优化")
#3)可对数据进行枚举
img_list = ["img_1.png", "img_2.png", "img_3.png"]
for index, img_i in enumerate(img_list):
print(f"索引 {index} 对应的数据是 {img_i}")
# 当不清楚应该循环多少次时,用while
command = ""
while command != "end":
command = input("请输入命令:")
print("正在执行命令:",command)
numbers=[10,11,12,13,14]
print(numbers[1:3]) #[11,12]
print(numbers[2:]) #[12,13,14]
print(numbers[:2]) #[10,11]
print(numbers[:-2]) #[10,11,12]
print(numbers[0:4:2]) #[10,12]
numbers = [1,2,3,4,5]
data = ["a", "b", 3, 4.0, 5]
result = numbers + data
print(result)
#[1, 2, 3, 4, 5, 'a', 'b', 3, 4.0, 5]
numbers = [1, 2, 3]
result = numbers * 3
print(result)
#[1, 2, 3, 1, 2, 3, 1, 2, 3]
numbers = [1,2,3]
if 1 in numbers:
print("1 在 numbers 里面")
else:
print("1 不在 numbers 里面")
#1 在 numbers 里面
numbers = [1,2,3, 4, 5]
print(len(numbers))
print(max(numbers))
print(min(numbers))
list_empty = []
list_a = [1,2,3]
list_b = list(range(10))
print(list_empty)
print(list_a)
print(list_b)
#1)使用 for … in … 遍历列表
data_list = ['a', 'b', 'c', 'd', 'e']
for data_i in data_list:
print(data_i)
#2)使用 enumerate遍历列表
data_list = ['a', 'b', 'c', 'd', 'e']
for index, data_i in enumerate(data_list):
print(index, data_i)
list_a = [1,2,3,4,5]
print(list_a)
list_a.append(6)
print(list_a)
list_a[0] = 0
print(list_a)
list_a.remove(4)
print(list_a)
list_a = [1,2,3,4,5]
result = sum(list_a)
print(result)
score = [50,60,20,40,30,80,90,55,100]
print("原列表:",score)
score.sort()
print("升序后:",score)
score.sort(reverse=True)
print("降序后:",score)
x_list = [i for i in range(10)]
print(x_list)
tuple_1 = ()
tuple_2 = tuple(range(10, 20, 2))
print(tuple_1)
print(tuple_2)
tuple_1 = (1, 2, 3, 4, 5)
print(tuple_1[2])
print(tuple_1[-1])
tuple_a = tuple(i for i in range(10))
print(tuple_a)
列表和元组的差异
列表(list)和元组(tuple)是 Python 中两种不同的数据类型,它们都可以用来存储一组数据。以下是它们的异同点:
(1)相同点:
1)存储多个元素
列表和元组都可以存储多个元素。
2)有序
列表和元组都是有序的,即它们的元素都有一个唯一的索引,从0开始。
3)支持多种数据类型
列表和元组都可以存储不同类型的数据,比如字符串、整数、浮点数等。
4)支持嵌套
列表和元组都可以嵌套其他的列表、元组或其他数据类型。
5)可迭代
列表和元组都是可迭代的,可以使用循环来遍历它们的元素。
(2)不同点:
1)可变性
列表是可变的(Mutable):
您可以修改列表的元素(添加、删除或更改)。
元组是不可变的(Immutable):
一旦创建了元组,您就不能修改它(不能添加、删除或更改元素)。
# 示例
list_example = [1, 2, 3]
list_example[0] = 0 # 可以修改列表的元素
tuple_example = (1, 2, 3)
# tuple_example[0] = 0 # 这会引发错误,因为不能修改元组的元素
2) 语法
列表使用方括号([]);
元组使用圆括号(());
3)性能
元组的性能通常比列表更好:因为元组是不可变的,所以它们在执行速度和内存使用方面通常比列表更高效。
4) 使用场景
列表:
当您需要一个可以修改的数据集时使用。
元组:
当您需要一个不可修改的数据集时使用。
info_xiaoming = {'name':'小明', 'age':14, 'score':60} info_zhangsan = {'name':'张三', 'age':15, 'score':79} print(info_xiaoming) print(info_xiaoming['age']) print(info_zhangsan['score']) # 创建一个字典来存储神经网络的配置参数 neural_network_config = { "layer_1": {"units": 64, "activation": "relu"}, "layer_2": {"units": 128, "activation": "relu"}, "output_layer": {"units": 10, "activation": "softmax"} } print(neural_network_config)
# 创建一个字典来存储神经网络的配置参数
neural_network_config = {
"layer_1": {"units": 64, "activation": "relu"},
"layer_2": {"units": 128, "activation": "relu"},
"output_layer": {"units": 10, "activation": "softmax"}
}
# 访问字典中的特定键值对
layer_1_units = neural_network_config["layer_1"]["units"]
print(f"Number of units in layer 1: {layer_1_units}")
info_xiaoming = {'name':'小明', 'age':14, 'score':60} # 遍历字典 print("以下为 xiaoming 的信息:") for key, value in info_xiaoming.items(): print(f"{key} 为 {value}") # 2) neural_network_config = { "layer_1": {"units": 64, "activation": "relu"}, "layer_2": {"units": 128, "activation": "relu"}, "output_layer": {"units": 10, "activation": "softmax"} } # 遍历字典,打印每一层的配置信息 for layer, config in neural_network_config.items(): print(f"{layer}: {config['units']} units, activation = {config['activation']}")
neural_network_config = { "layer_1": {"units": 64, "activation": "relu"}, "layer_2": {"units": 128, "activation": "relu"}, "output_layer": {"units": 10, "activation": "softmax"} } # 添加一个新的层到字典 neural_network_config["layer_3"] = {"units": 256, "activation": "relu"} # 修改第一层的单元数 neural_network_config["layer_1"]["units"] = 128 # 删除输出层的激活函数键值对 del neural_network_config["output_layer"]["activation"] # 输出修改后的字典 print(neural_network_config)
set_1 = set()
set_2 = {}
set_3 = {1,2,3,3, 4,5}
print(set_1)
print(set_2)
print(set_3)
# 初始化一个空集合
my_set = set()
# 添加元素
my_set.add(1) # {1}
my_set.add(2) # {1, 2}
my_set.add(3) # {1, 2, 3}
# 删除元素
my_set.remove(2) # {1, 3}
print(my_set)
# 定义两个集合 set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} # 交集运算 intersection = set1.intersection(set2) # 或者 # intersection = set1 & set2 print(f"交集: {intersection}") # 并集运算 union = set1.union(set2) # 或者 # union = set1 | set2 print(f"并集: {union}") # 差集运算 difference1 = set1.difference(set2) # 或者 # difference1 = set1 - set2 print(f"set1 和 set2 的差集: {difference1}") difference2 = set2.difference(set1) # 或者 # difference2 = set2 - set1 print(f"set2 和 set1 的差集: {difference2}")
# 示例字符串 string = "this_is_a_file.jpg" # 获取字符串的第2到第5个字符(索引从0开始) substring = string[1:5] # 结果: "his_" print(substring) # 获取字符串的第2到最后一个字符 substring = string[1:] # 结果: "his_is_a_file.jpg" print(substring) # 获取字符串的开始到第5个字符 substring = string[:5] # 结果: "this_" print(substring) # 获取整个字符串 substring = string[:] # 结果: "this_is_a_file.jpg" print(substring) # 获取字符串的最后3个字符 substring = string[-3:] # 结果: "jpg" print(substring) # 获取字符串的第2到倒数第3个字符,每隔2个字符取一个 substring = string[1:-2:2] # 结果: "hsi__iej" print(substring) # 反转字符串 substring = string[::-1] # 结果: "gpj.elif_a_si_siht" print(substring)
# 定义两个字符串 string1 = "Hello" string2 = "hello" string3 = "Hello" # 使用 == 操作符比较字符串 is_equal = string1 == string2 # 结果: False print(f"string1 is equal to string2: {is_equal}") is_equal = string1 == string3 # 结果: True print(f"string1 is equal to string3: {is_equal}") # 使用 != 操作符比较字符串 is_not_equal = string1 != string2 # 结果: True print(f"string1 is not equal to string2: {is_not_equal}") # 使用 <, > 操作符比较字符串(基于字典顺序) is_less_than = string1 < string2 # 结果: True (因为大写字母在字典顺序中排在小写字母之前) print(f"string1 is less than string2: {is_less_than}") # 不区分大小写的字符串比较 is_equal_ignore_case = string1.lower() == string2.lower() # 结果: True print(f"string1 is equal to string2 (ignore case): {is_equal_ignore_case}")
1)形参与实参
# 形参是函数定义时的参数,实参是函数调用时的参数
def create_model(layers, units): # layers和units是形参
print(f"Creating a model with {layers} layers and {units} units in each layer.")
# 调用函数
create_model(3, 128) # 3和128是实参
2)位置参数
# 位置参数的顺序很重要
def create_model(layers, units):
print(f"Creating a model with {layers} layers and {units} units in each layer.")
# 调用函数
create_model(3, 128)
create_model(128, 3)
3)关键字参数
# 使用关键字参数调用函数
def create_model(layers, units):
print(f"Creating a model with {layers} layers and {units} units in each layer.")
# 调用函数
create_model(units=128, layers=3) # 使用关键字参数,顺序不重要
create_model(layers=3, units=128)
4)默认参数
# 使用默认参数值
def create_model(layers=3, units=128):
print(f"Creating a model with {layers} layers and {units} units in each layer.")
# 调用函数
create_model() # 使用默认值
5)可变参数
# 使用可变参数接收多个参数值
def add_layers(model, *layers):
for layer in layers:
print(f"Adding layer {layer} to model {model}.")
# 调用函数
add_layers("Model1", "conv", "relu", "softmax")
# 函数返回模型的信息
def create_model(layers, units):
info = f"Creating a model with {layers} layers and {units} units in each layer."
return info
# 调用函数
model_info = create_model(3, 128)
print(model_info)
1)全局变量
# 全局变量
MODEL_NAME = "CNN"
def print_model_name():
print(f"The model name is {MODEL_NAME}.")
# 调用函数
print_model_name()
2)局部变量
# 局部变量
def create_model():
model_name = "RNN" # 局部变量
print(f"Creating a model named {model_name}.")
# 调用函数
create_model()
print(model_name) # 此行代码会报错
# 使用lambda创建匿名函数
calculate_units = lambda layers: layers * 128
# 调用函数
units = calculate_units(3)
print(f"Total units: {units}")
1)复制单个文件
import shutil
file_1_loc = './resources/保存目录1/fire.jpg'
file_1_save_loc = './resources/保存目录2/fire_copy.jpg'
shutil.copyfile(file_1_loc, file_1_save_loc)
2) 复制多个文件
import shutil # 源目录和目标目录 src = 'resources/fire_yolo_format' dst = 'resources/fire_yolo_format_new' # 使用copytree复制目录 shutil.copytree(src, dst) print(f"Directory copied from {src} to {dst}") #还可以复制时忽略特定格式 import shutil # 源目录和目标目录 src = 'resources/fire_yolo_format' dst = 'resources/fire_yolo_format_new_2' # 使用copytree复制目录 shutil.copytree(src, dst, ignore=shutil.ignore_patterns("*.txt")) print(f"Directory copied from {src} to {dst}")
3)移动文件
import shutil
file_1_loc = './resources/保存目录1/fire_label.txt'
file_1_save_loc = './resources/保存目录2/fire_label.txt'
shutil.move(file_1_loc, file_1_save_loc)
4)删除文件
import os
file_loc = r'./resources/保存目录1/fire.jpg'
os.remove(file_loc)
1)创建文件夹
#文件或文件夹是否已经存在 os.path.exists
#创建一级文件夹
import os
dir_name = "my_dir"
if os.path.exists(dir_name):
print("文件夹已经存在!")
else:
os.mkdir(dir_name)
print("文件夹已经创建完毕!")
#创建多级文件夹
import os
os.makedirs("my_dir_1\\my_dir_2\\my_dir_3")
2)遍历文件夹
#路径拼接 os.path.join
#路径遍历 os.walk
import os
root_dir = "dir_loc"
file_full_path_list = []
# os.walk():函数用于遍历一个目录及其所有子目录,并可以生成一个包含每个目录路径、
# 该目录下所有文件夹的名称和该目录下所有文件的名称的迭代器。(对文件夹进行遍历)
for root, dirs, files in os.walk(root_dir):
for file_i in files:
file_i_full_path = os.path.join(root, file_i)
file_full_path_list.append(file_i_full_path)
print(file_full_path_list)
3)删除空白文件夹
#os.rmdir 只能删除空的文件夹
import os
dir_path = 'my_dir'
if os.path.exists(dir_path):
print("删除文件夹"+dir_path)
os.rmdir('my_dir')
print("删除完成")
else:
print("文件夹"+dir_path+"不存在")
4)删除非空文件夹
import os
import shutil
dir_name = "my_dir"
if os.path.exists(dir_name):
shutil.rmtree(dir_name) # 文件夹里有东西也一并删除
print("文件夹已经删除!")
else:
os.mkdir(dir_name)
print("文件夹不存在!")
# 文件清洗 # 将 'resources/fire_yolo_format' 当中标签名和图片名匹配的文件,按原排放顺序保存到新的文件夹 'resources/clean_data' # 需要用代码创建文件夹 import os import shutil def get_files(root_path): file_full_path_list = [] file_name_list = [] for root, dirs, files in os.walk(root_path): for file_i in files: file_i_full_path = os.path.join(root, file_i) file_full_path_list.append(file_i_full_path) file_name_list.append(os.path.splitext(file_i)[0]) # 使用os.path.splitext获取文件名 return file_full_path_list, file_name_list root_path_from = r'resources/fire_yolo_format' root_path_save = r'resources/clean_data' root_images_from = os.path.join(root_path_from, 'images') root_labels_from = os.path.join(root_path_from, 'labels') root_images_save = os.path.join(root_path_save, 'images') root_labels_save = os.path.join(root_path_save, 'labels') # 创建保存的文件夹 for dir_path in [root_images_save, root_labels_save]: if not os.path.exists(dir_path): os.makedirs(dir_path) image_file_full_path_list, image_file_name_list = get_files(root_images_from) labels_file_full_path_list, labels_file_name_list = get_files(root_labels_from) intersection_set = set(image_file_name_list) & set(labels_file_name_list) # 复制交集中的文件到新的文件夹 for file_name in intersection_set: image_index = image_file_name_list.index(file_name) label_index = labels_file_name_list.index(file_name) shutil.copy(image_file_full_path_list[image_index], root_images_save) shutil.copy(labels_file_full_path_list[label_index], root_labels_save)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。