1 Python补充
Python 2.x 与 Python 3.x 除法的关系。
- Python 2.x 的 / 除法:整数相除,结果舍弃小数;浮点数相除,结果保留小数。
- Python 3.x 的 / 除法:整数或浮点数相除,结果都保留小数。
- Python 2.x 的 // 除法:除法结果进行floor()操作,即向下取整。
- Python 3.x 的 // 除法:同上。
所以,
- Python 2.x 的 / 除法中整数相除的操作可以直接用Python 3.x 的 // 操作代替;
- Python 2.x 的 / 除法中浮点数相除的操作可以直接用Python 3.x 的 / 操作代替;
- Python 2.x 的 // 除法可以直接用Python 3.x 的 // 操作代替;
在list变量之前加*
用法:将列表分解为单独的元素作为函数形参。
在dict变量之前加**
用法:将字典分解为单独的元素作为函数形参。
用zip()函数打包
用法:将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。
zip([iterable, ...])
自动给数字补零
有时候我们需要用一种定长的形式显示数字,如001,002,003,...这就需要根据最大长度来对数字进行补零,Python中实现方法如下:
n = '12'
s = n.zfill(3)
对于纯数字,我们也可以通过格式化的方式来补0
n = 12
s = '%03d' % n
npy文件——Numpy专用的二进制格式
np.load()和np.save()是读写磁盘数组数据的两个重要函数。使用时,数组会以未压缩的原始二进制格式保存在扩展名为.npy的文件中。
npz文件——压缩文件
使用np.savez()函数可以将多个数组保存到同一个文件中。
np.savez()函数的第一个参数是文件名,其后的参数都是需要保存的数组。传递数组时可以使用关键字参数为数组命名,非关键字参数传递的数组会自动起名为arr_0、arr_1……
np.savez()函数输出的是一个扩展名为.npz的压缩文件,它包含多个与保存的数组对应的npy文件(由save()函数保存),文件名对应数组名
读取.npz文件时使用np.load()函数,返回的是一个类似于字典的对象,因此可以通过数组名作为关键字对多个数组进行访问
2 随机数模块
导入模块
import random
random.random() 用来随机生成一个0到1之间的浮点数,包括零。
In [2]: random.random()
Out[2]: 0.15790797219589303
randint(a, b) 用来生成[a,b]之间的随意整数,包括两个边界值。
In [13]: random.randint(1,6)
Out[13]: 1
random.uniform(a,b) 用来生成[a,b]之间的随意浮点数,包括两个边界值。
In [15]: random.uniform(1,6)
Out[15]: 5.497873150216069
choice(seq) 从一个非空序列选出随机一个元素。seq泛指list,tuple,字符串等
In [17]: List = [1,2,3,4,5,6]
In [18]: random.choice(List)
Out[18]: 1
randrange(start, stop[, step = 1]) 这个就是random和range函数的合二为一了。但注意,range用法有变。
In [28]: random.randrange(1,6)
Out[28]: 3
random.shuffle(x[,random]) 正如函数名所表示的意思,shuffle,洗牌,将一个列表中的元素打乱。
In [37]: List = [1,2,3,4,5,6]
In [38]: random.shuffle(List)
In [39]: print(List)
[2, 1, 6, 4, 5, 3]
random.sample(sequence,k) 从有序列表中选k个作为一个片段返回。
In [42]: List = [1,2,3,4,5,6]
In [43]: random.sample(List,3)
Out[43]: [4, 6, 3]
random.seed ( [x] ) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。使用同一个种子,每次生成的随机数序列都是相同的。
In [49]: random.seed(10)
In [50]: print("Random number with seed 10: ", random.random())
Random number with seed 10: 0.5714025946899135
In [51]: random.seed(10)
In [52]: print("Random number with seed 10: ", random.random())
Random number with seed 10: 0.5714025946899135
In [53]: random.seed(10)
In [54]: print("Random number with seed 10: ", random.random())
Random number with seed 10: 0.5714025946899135
8 Open3D三维数据处理
可视化
draw_geometries()
draw_geometries()的等价形式。可以使用Visualizer类自定义显示。
def custom_draw_geometry(pcd):
vis = o3d.visualization.Visualizer()
vis.create_window()
vis.add_geometry(pcd)
vis.run()
vis.destroy_window()
通过对Visualizer对象的ViewControl和RenderOption属性进行设置,可以自定义显示的效果。
draw_geometries()的非阻塞(block)形式
执行run()函数会阻塞在当前窗口的循环中,并且响应用户操作重新进行渲染,直到关闭窗口。我们可以替换掉run函数,进而自行控制渲染的进程。
vis = Visualizer()
vis.create_window()
for i in range(iteration):
vis.update_geometry(geometry)
vis.poll_events()
vis.update_renderer()
999
pandas
eval()
shutil
[X] 好用的工具库
tqdm进度条
用一个进度条显示当前循环的完成进度。只需将可迭代对象放在tqdm()的括号里即可。
from tqdm import tqdm
for x in tqdm(lst):
...
argparse命令行参数解析
import argparse
parser = argparse.ArgumentParser(description='')
parser.add_argument('--input', type=int, required=True, help='')
parser.add_argument(...)
...
args = parser.parse_args()
add_argument()常用参数
type 将命令行参数自动转换为指定类型。
required 是否为必需参数。
default 非必需参数的默认值。
nargs='*' 该参数可接受多个值,存为列表。
re正则