项目场景:
`python日常简单库的使用如:txt文件操作、numpy操作、字典操作、取整操作等。
python读写txt
# 1.读取所有行
with open('test.txt','r', encoding='UTF-8') as f:
data = f.readlines()
print(data)
# 2.读取单行
with open('test.txt','r', encoding='UTF-8') as f:
data = f.readline()
print(data)
# 3.读取文件所有内容
with open('test.txt','r', encoding='UTF-8') as f:
data = f.read()
print(data)
# 4.写文件操作
>>> f = open('test.txt', 'w') # 若是'wb'就表示写二进制文件
>>> f.write('Hello, world!')
>>> f.close()
numpy保存数据/加载数据/字典格式
import numpy as np
test = {'name':'xiaoming','age':12,'job':'student'}
>>> import numpy as np
>>> test = {'name':'xiaoming','age':12,'job':'student'}
>>> np.save('test.npy',test)
>>> load_test = np.load('test.npy',allow_pickle=True)
>>> load_test.item()
{'name': 'xiaoming', 'age': 12, 'job': 'student'}
>>> load_test.item().get('name')
'xiaoming'
循环读取字典
>>> test = {'name':'xiaoming'}
>>> for (key,value) in test.items():
>>> print(key+':'+value)
'name':'xiaoming'
四舍五入
>>> round(1.2)
1
>>> round(1.9)
2
向上向下取整
# 向上取整
>>> import math
>>> math.ceil(1.1)
2
>>> math.ceil(1.4)
2
>>> math.ceil(1.9)
2
# 向下取整
>>> import math
>>> math.floor(1.9)
1
>>> math.floor(1.5)
1
>>> math.floor(1.2)
1
python列表追加元素的两种方式
# 第一种方式(append)
>>> aaa = [1,2,3]
>>> bbb = [4,5,6]
>>> aaa.append(bbb)
>>> aaa
[1, 2, 3, [4, 5, 6]]
第二种方式(extend)
>>> aaa = [1,2,3]
>>> bbb = [4,5,6]
>>> aaa.extend(bbb)
>>> aaa
[1, 2, 3, 4, 5, 6]
python列表排序内置函数
# sort直接改变原始列表,没有返回值。通过设置超参数reverse来控制正反序
>>> aaa = [1,2,3]
>>> bbb = [4,5,6]
>>> aaa = [1,3,2,5,4,2]
>>> aaa
[1, 3, 2, 5, 4, 2]
>>> aaa.sort()
>>> aaa
[1, 2, 2, 3, 4, 5]
>>> aaa.sort(reverse=True)
>>> aaa
[5, 4, 3, 2, 2, 1]
# sorted,不直接改变原始列表,有返回值。通过设置超参数reverse来控制正反序
>>> aaa = [1,3,5,2,4,6]
>>> aaa
[1, 3, 5, 2, 4, 6]
>>> bbb = sorted(aaa)
>>> bbb
[1, 2, 3, 4, 5, 6]
>>> ccc = sorted(aaa,reverse=True)
>>> ccc
[6, 5, 4, 3, 2, 1]
# 增加知识点
# python中并无直接返回下标的函数,如果需要从pyton底层做这事,可以使用sort或者sorted加上for循环获取index。
# numpy中有函数返回排序后的下标:argsort
# torch自带的sort函数可以直接返回排好序的列表和对应的索引(推荐
python列表逆序
>>> aaa = [1,2,3,4,5,6]
>>> aaa
[1, 2, 3, 4, 5, 6]
>>> aaa.reverse()
>>> aaa
[6, 5, 4, 3, 2, 1]
python中的深拷贝和浅拷贝
"""
概念:
概念:
浅拷贝:只是增加了一个指针指向已存在的内存地址
深拷贝:是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,
表象:假设B复制了A,修改A的时候,看B是否发生变化:
如果B跟着也变了,说明是浅拷贝
如果B没有改变,说明是深拷贝
"""
# python赋值(只要初始元素进行了修改,赋值之后的元素也会修改,反之亦然)
>>> aaa = [1,2,3]
>>> bbb = aaa
>>> aaa.append(4)
>>> aaa
[1, 2, 3, 4]
>>> bbb
[1, 2, 3, 4]
>>> aaa[0] = 100
>>> aaa
[100, 2, 3, 4]
>>> bbb
[100, 2, 3, 4]
# 浅拷贝(初始元素的直接子元素修改后不会影响到拷贝后的元素,但是如果某个元素是可迭代对象,那么就会影响到后来的元素)
>>> aaa = [1,2,[3,4]]
>>> bbb = aaa.copy()
>>> aaa[0] = 100
>>> bbb.append(0)
>>> aaa
[100, 2, [3, 4]]
>>> bbb
[1, 2, [3, 4], 0]
>>> aaa[2].append(200)
>>> aaa
[100, 2, [3, 4, 200]]
>>> bbb
[1, 2, [3, 4, 200], 0]
# 深拷贝(拷贝后的变量和原来的变量没有任何关系,除了值一样,改变前后两个变量都是独立的,不会对另一个产生影响)
>>> import copy
>>> aaa = [1,2,[3,4]]
>>> bbb = copy.deepcopy(aaa)
>>> aaa
[1, 2, [3, 4]]
>>> bbb
[1, 2, [3, 4]]
>>> aaa.append(5)
>>> bbb[0] = 100
>>> aaa
[1, 2, [3, 4], 5]
>>> bbb
[100, 2, [3, 4]]
>>> aaa[2].append(5)
>>> aaa
[1, 2, [3, 4, 5], 5]
>>> bbb
[100, 2, [3, 4]]
python读写excel文件
# 读取excel
>>> import xlrd
>>> readbook = xlrd.open_workbook(r'\test\canying.xlsx')
>>> sheet = readbook.sheet_by_index(1)#索引的方式,从0开始
>>> sheet = readbook.sheet_by_name('sheet2')#名字的方式
>>> nrows = sheet.nrows#行
>>> ncols = sheet.ncols#列
>>> lng = table.cell(i,3).value#获取i行3列的表格值
>>> lat = table.cell(i,4).value#获取i行4列的表格值
# 写入excel
>>> import xlwt
>>> writebook = xlwt.Workbook()#打开一个excel
>>> sheet = writebook.add_sheet('test')#在打开的excel中添加一个sheet
>>> sheet.write(i,0,result[0])#写入excel,i行0列
>>> writebook.save('answer.xls')#一定要记得保存
python中的map函数和lambda函数(匿名函数)
>>> def square(x) : # 计算平方数
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
<map object at 0x100d3d550> # 返回迭代器
>>> list(map(square, [1,2,3,4,5])) # 使用 list() 转换为列表
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
numpy打乱列表顺序
>>> aaa = [i for i in range(10)]
>>> aaa
[0,1,2,3,4,5,6,7,8,9]
>>> np.random.shuffle(aaa)
>>> aaa
[1 7 5 2 9 4 3 6 0 8]
tensorboardX记录模型训练损失和精度
from tensorboardX import SummaryWriter
import numpy as np
# 训练程序中加入以下内容
writer = SummaryWriter('logs')
for i in range(100):
#当数据只有一个时
writer.add_scalar("train_acc",i,i)
#当数据不止一个时
writer.add_scalars("train_acc_loss",{"acc":i,"loss":100-i},i)
writer.close()
查看训练精度和损失,再另一个终端输入
tensorboard --logdir "logs"
json读写
import json
test_dict = {'bigberg': [7600, {1: [['iPhone', 6300], ['Bike', 800], ['shirt', 300]]}]}
with open("./record.json","w") as f:
# indent=4的作用是格式化输出
f.write(json.dumps(test_dict, indent=4))
print("加载入文件完成...")
str操作(zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0)
num = 1
str(num).zfill(8)
# '00000001'
递归获得一个文件夹内的所有文件(包括子文件夹)
import os
def get_filelist(dir):
Filepathlist = []
for home, dirs, files in os.walk(dir):
for filename in files:
Filepathlist.append(os.path.join(home, filename))
return Filepathlist
查询python解释器路径
import sys
import os
print('当前 Python 解释器路径:')
print(sys.executable)
报错:
SyntaxError: Non-ASCII character ‘\xe8’ in file 1.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
解决方案:
在Python文件添加开头:#encoding:utf-8