- 找出numpy矩阵中的不同元素
- 屏蔽运行警告
- 按照某一行(或列)升序排序
- 按照某一行(或列)降序排序
- 列表推导式
- 字典推导式
- zip与enumerate用法
- os.system函数将字符串转化成命令在服务器上运行
- 函数参数中会有冒号,有的函数后面会跟着一个箭头,作何解释
- 在arr数组上依次取出3个数据
- list的复制、浅拷贝和深拷贝
- 格式化字符串f-string概览
- 删除指定目录下的文件和文件夹
- 将指定目录下的文件复制到另一个目录
- 断言函数assert用法
- python中__len__使得类表现得像一个list
- 从列表中指定位置取元素并等间距取出来
- Python三目运算符
- ==、is和not is、in和not in区别
- id()、dir、help用途
- python之dict(或对象)与json之间转化
- python读取、写入和更新xml文件
- 实例方法、类方法和静态方法区别于作用(比较好的解释)
- 创建多个连续编号的目录
找出numpy矩阵中的不同元素
# array转数组转list转set
arr = np.array([1,1,2,3,3,3,3])
print(set(arr.flatten().tolist()))
屏蔽运行警告
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '1' # 默认,显示所有信息
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '2' # 只显示 warning 和 Error
os.environ["TF_CPP_MIN_LOG_LEVEL"] = '3' # 只显示 Error
按照某一行(或列)升序排序
mat1 = np.array([[2, 3, 5, 3],[6, 3, 5, 2]])
t = np.argsort(mat[1, :])
mat2 = mat[:, t[::]] # 按照第二行升序排序
按照某一行(或列)降序排序
mat1 = np.array([[2, 3, 5, 3],[6, 3, 5, 2]])
t = np.argsort(mat[1, :])
mat2 = mat[:, t[::-1]] # 按照第二行降序排序
列表推导式
num1 = [1,1,2,2,5,3]
num2 = [elem for elem in num1]
num3 = [elem for elem in num1 if elem==2]
num4 = [elem if elem==1 else elem-10 for elem in num1]
字典推导式
dict1 = {"a":1, "b":2, "c":3}
dict2 = {k:v for k,v in dict1.items() if k=="a" or k=="b"}
print(dict1)
print(dict2)
zip与enumerate用法
np.random.seed(666)
y1 = np.random.randint(10, 100, 50)
y2 = np.random.normal(size=(50,))
for elem1, elem2 in zip(y1, y2):
print("elem1:", elem1, "elem2:", elem2)
for idx, elem3 in enumerate(y1):
print("idx:", idx, "elem3:", elem3)
os.system函数将字符串转化成命令在服务器上运行
ml = "touch 1.txt"
os.system(ml)
os.system('cd /usr/local && mkdir aaa.txt')
函数参数中会有冒号,有的函数后面会跟着一个箭头,作何解释
函数参数中的冒号是参数的类型建议符,告诉程序员希望传入的实参的类型
函数后面跟着的箭头是函数返回值的类型建议符,用来说明该函数返回的值是什么类型
说明:num1和num2也可以是str类型
def twoSum(num1: int, num2: int=100) -> int:
sum = num1 + num2
return sum
在arr数组上依次取出3个数据
import numpy as np
arr = np.arange(21)
batchsize = 3 # 每次取三个数据
for start, end in zip(range(0, len(arr), batchsize), range(batchsize, len(arr), batchsize)):
batch = arr[start:end]
print(batch)
list的复制、浅拷贝和深拷贝
在用Python写代码的时候往往会遇到真复制和假复制的问题,真复制就是创建一个新的实例(instance),而假复制就是把原对象的引用赋给了新的标志符。判断是不是真复制可以使用id()这个函数。
当然,复制可以使用import copy,然后copy.copy(object),copy.deepcopy(object)来解决。通常意义下copy和deepcopy的作用都是深复制,不放心的话可以使用id()或者is来判断一下。
格式化字符串f-string概览
list增、删、改、查、排序和统计
排序函数sort 、sorted 、argsort
numpy的增、删、改、查、排序和统计
numpy各种生成随机数的方法和Python生成不重复的随机数
删除指定目录下的文件和文件夹
import os
import shutil
def delete_file(target_dir):
"""
删除指定目录下的所有文件和文件夹
:param filepath: 路径(str)
"""
del_list = os.listdir(target_dir) # 当前目录下文件和文件夹
for f in del_list:
fp = os.path.join(target_dir, f)
if os.path.isfile(fp): # # file_path是否是文件
os.remove(fp)
elif os.path.isdir(fp): # file_path是否是目录
shutil.rmtree(fp)
target_dir = "./"
delete_file(target_dir)
将指定目录下的文件复制到另一个目录
import os
import shutil
def copy_files_to_directoy(src_dir,dst_dir,):
files = os.listdir(src_dir)
for f in files:
src_file = src_dir + f
dst_file = dst_dir + f
shutil.copy(src_file, dst_file)
src_dir = "./src_dir/"
dst_dir = "./dst_dir/"
断言函数assert用法
断言函数用于对一个bool表达式进行断言,如果该bool表达式为True,该程序继续执行,否则程序会引发AssertionError错误
assert set(gt_image.tolist()) == {0, 2}, "pixel values are not {0,1}"
AssertionError: pixel values are not {0,1}
python中__len__使得类表现得像一个list
如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。
例如,我们写一个 Students 类,把名字传进去:
class Students(object):
def __init__(self, *args):
self.names = args
def __len__(self):
return len(self.names)
# 只要正确实现了__len__()方法,就可以用len()函数返回Students实例的“长度”:
ss = Students('Bob', 'Alice', 'Tim')
print(len(ss)) # 3
从列表中指定位置取元素并等间距取出来
li = [1,2,3,4,1,1,1,1,1,1,1,1][slice(5, 10, 3)]
lili = list(range(len(li)))[slice(5, 10, 3)]
Python三目运算符
True_statements if expression else False_statements
==、is和not is、in和not in区别
==:比较两个变量的值
is和not is :用于判断两个变量是否引用同一个对象
in和not in:用于判断某个成员是否位于序列中
id()、dir、help用途
id()函数:查看变量所引用对象的内存地址
dir():列出指定类或模块包含的全部内容(包括函数、方法、类、变量等)
help(): 查看某个函数或方法的帮助文档
python之dict(或对象)与json之间转化
python读取、写入和更新xml文件
实例方法、类方法和静态方法区别于作用(比较好的解释)
创建多个连续编号的目录
import os
root = './'
for i in range(1, 11):
os.mkdir(root+ f'{i:02d}')