scipy.spatial.transform.Rotation.

random#

classmethod Rotation.random(cls, num=None, rng=None)#

產生均勻分佈的旋轉。

參數:
num整數或 None,選填

要產生的隨機旋轉數量。如果為 None (預設),則產生單一旋轉。

rng{None, 整數, numpy.random.Generator}, 選填

如果 rng 通過關鍵字傳遞,則 numpy.random.Generator 以外的類型會傳遞給 numpy.random.default_rng 以實例化 Generator。如果 rng 已經是 Generator 實例,則使用提供的實例。指定 rng 以獲得可重複的函數行為。

如果此參數通過位置傳遞,或者 random_state 通過關鍵字傳遞,則適用於參數 random_state 的舊版行為

  • 如果 random_state 為 None (或 numpy.random),則使用 numpy.random.RandomState 單例。

  • 如果 random_state 是整數,則會使用新的 RandomState 實例,並以 random_state 作為種子。

  • 如果 random_state 已經是 GeneratorRandomState 實例,則使用該實例。

版本變更於 1.15.0: 作為從使用 numpy.random.RandomState 過渡到 numpy.random.GeneratorSPEC-0007 轉換的一部分,此關鍵字從 random_state 變更為 rng。在過渡期間,兩個關鍵字將繼續有效,儘管一次只能指定一個。在過渡期之後,使用 random_state 關鍵字的函數呼叫將發出警告。上面概述了 random_staterng 的行為,但在新程式碼中應僅使用 rng 關鍵字。

回傳值:
random_rotationRotation 實例

如果 num 為 None,則包含單一旋轉。否則包含 num 個旋轉的堆疊。

註解

此函數針對有效率地採樣三維隨機旋轉矩陣進行了最佳化。為了產生更高維度的隨機旋轉矩陣,請參閱 scipy.stats.special_ortho_group

範例

>>> from scipy.spatial.transform import Rotation as R

採樣單一旋轉

>>> R.random().as_euler('zxy', degrees=True)
array([-110.5976185 ,   55.32758512,   76.3289269 ])  # random

採樣堆疊旋轉

>>> R.random(5).as_euler('zxy', degrees=True)
array([[-110.5976185 ,   55.32758512,   76.3289269 ],  # random
       [ -91.59132005,  -14.3629884 ,  -93.91933182],
       [  25.23835501,   45.02035145, -121.67867086],
       [ -51.51414184,  -15.29022692, -172.46870023],
       [ -81.63376847,  -27.39521579,    2.60408416]])