zoukankan      html  css  js  c++  java
  • Python拓展

    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
    

    3 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()
    

    一些问题

    • 方法一:
    my_lst = [MyClass()]*3
    

    生成的列表成员全都指向一个对象;

    • 方法二:
    my_lst = [MyClass() for i in range(3)]
    

    生成的列表成员包含不同实例;

    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正则

  • 相关阅读:
    焦虑来回走
    去省政府客串
    中国地质大学(北京)招生信息有点坑
    张桂梅校长再获殊荣,实至名归!她的故事值得一看再看……
    行内容转为列内容
    公文写作心得
    钟南山院士亲口说的“如何保持健康长寿
    VMware虚拟机出现“内部错误”如何解决?
    CI框架深入篇(2)一些基础的我之不知道的标准格式
    SQL语句学习记录(三)
  • 原文地址:https://www.cnblogs.com/tofengz/p/12856961.html
Copyright © 2011-2022 走看看