__pow__#
- Rotation.__pow__(n, modulus=None)[source]#
将此旋转自身组合 n 次。
旋转
p与自身组合可以扩展到非整数n,方法是将幂n视为应用于旋转固定轴的旋转角度的比例因子。表达式q = p ** n也可以表示为q = Rotation.from_rotvec(n * p.as_rotvec())。如果
n为负数,则在应用幂之前会反转旋转。换句话说,p ** -abs(n) == p.inv() ** abs(n)。- 参数:
- nfloat | Array
旋转自身组合的次数。如果 n 是一个数组,那么它必须是 0d 或 1d,形状为 (1,)。
- modulusNone
此重写的参数不适用于 Rotations 必须为
None。
- 返回:
- power
Rotation实例 结果旋转将与原始旋转对象具有相同的形状。输出的每个元素是输入旋转的相应元素提升到
n的幂。
- power
附注
例如,2 的幂将使旋转角度翻倍,而 0.5 的幂将使旋转角度减半。有三种值得注意的情况:如果
n == 1则返回原始旋转,如果n == 0则返回单位旋转,如果n == -1则返回p.inv()。请注意,有效取旋转根的 fractional powers
n,使用该角度的 shortest path smallest representation(主根)来执行。这意味着n和1/n的幂不一定是彼此的逆。例如,+240 度旋转的 0.5 次方将计算为 -120 度旋转的 0.5 次方,结果将是 -60 而不是 +120 度旋转。数组 API 标准支持
__pow__对 NumPy 之外的 Python Array API Standard 兼容后端具有实验性支持。请考虑通过设置环境变量SCIPY_ARRAY_API=1并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。库
CPU
GPU
NumPy
✅
不适用
CuPy
不适用
✅
PyTorch
✅
✅
JAX
✅
✅
Dask
⛔
不适用
有关更多信息,请参阅 对数组 API 标准的支持。
示例
>>> from scipy.spatial.transform import Rotation as R
将旋转提升到幂
>>> p = R.from_rotvec([1, 0, 0]) >>> q = p ** 2 >>> q.as_rotvec() array([2., 0., 0.]) >>> r = p ** 0.5 >>> r.as_rotvec() array([0.5, 0., 0.])
逆幂不一定抵消
>>> p = R.from_rotvec([0, 0, 120], degrees=True) >>> ((p ** 2) ** 0.5).as_rotvec(degrees=True) array([ -0., -0., -60.])