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 已经是
Generator或RandomState实例,则使用该实例。
版本 1.15.0 中变更: 作为从
numpy.random.RandomState迁移到numpy.random.Generator的 SPEC-007 过渡的一部分,该关键字已从 random_state 更改为 rng。在过渡期内,两个关键字都将继续有效,尽管一次只能指定其中一个。过渡期后,使用 random_state 关键字的函数调用将发出警告。random_state 和 rng 的行为如上所述,但新代码中应仅使用 rng 关键字。- shapeint 元组,可选
要生成的随机旋转的形状。如果指定了此项,num 必须为 None。
- 返回:
- random_rotation
Rotation实例 如果 num 为 None,则包含单个旋转。否则,包含一个由 num 个旋转组成的堆栈。
- random_rotation
附注
此函数针对高效采样三维空间中的随机旋转矩阵进行了优化。若要生成高维空间的随机旋转矩阵,请参见
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]])