天天看點

python粘性拓展_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

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