scipy.spatial.transform.Rotation.

random#

static Rotation.random(num=None, rng=None, *, shape=None, random_state=None)[source]#

生成均匀分布在球面上的旋转。

形式上,这些旋转遵循 SO(3) 群上的 Haar-均匀分布。

参数:
numint 或 None, 可选

要生成的随机旋转的数量。 如果为 None(默认值),则生成单个旋转。

rng{None, int, 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.RandomStatenumpy.random.GeneratorSPEC-007 转换的一部分,此关键字从 random_state 更改为 rng。 在过渡期间,两个关键字都将继续有效,但一次只能指定一个。 过渡期结束后,使用 random_state 关键字的函数调用将发出警告。 random_staterng 的行为如上所述,但新代码应仅使用 rng 关键字。

shapetuple of ints, 可选

要生成的随机旋转的形状。 如果指定,num 必须为 None。

返回:
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]])