scipy.spatial.transform.Rotation.
mean#
- Rotation.mean(weights=None, axis=None)[source]#
计算旋转的平均值。
使用的平均值是弦L2平均值(也称为投影或诱导算术平均值)[1]。如果
A是一组旋转矩阵,则平均值M是最小化以下损失函数的旋转矩阵\[L(M) = \sum_{i = 1}^{n} w_i \lVert \mathbf{A}_i - \mathbf{M} \rVert^2 ,\]其中\(w_i\)是对应于每个矩阵的权重。
- 参数:
- weightsarray_like shape (…, N), 可选
描述旋转相对重要性的权重。如果为None(默认值),则假定weights中的所有值相等。如果给定,weights的形状必须可以广播到旋转形状。权重必须是非负数。
- axisNone, int, 或 int 的元组, 可选
计算平均值的轴或轴。默认情况下,计算所有旋转的平均值。
- 返回:
- mean
Rotation实例 包含当前实例中旋转平均值的单个旋转。
- mean
附注
数组 API 标准支持
mean对 Python Array API 标准兼容的后端具有实验性支持,除了 NumPy 之外。请考虑通过设置环境变量SCIPY_ARRAY_API=1并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。库
CPU
GPU
NumPy
✅
不适用
CuPy
不适用
✅
PyTorch
✅
✅
JAX
✅
✅
Dask
⛔
不适用
有关更多信息,请参阅 对数组 API 标准的支持。
参考文献
[1]Hartley, Richard, 等人,“Rotation Averaging”,International Journal of Computer Vision 103, 2013, 页码 267-305。
示例
>>> from scipy.spatial.transform import Rotation as R >>> r = R.from_euler('zyx', [[0, 0, 0], ... [1, 0, 0], ... [0, 1, 0], ... [0, 0, 1]], degrees=True) >>> r.mean().as_euler('zyx', degrees=True) array([0.24945696, 0.25054542, 0.24945696])