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