scipy.spatial.transform.RigidTransform.

identity#

static RigidTransform.identity(num=None, *, shape=None)[source]#

初始化一个单位变换。

与单位变换的组合没有效果,将单位变换应用于向量也没有效果。

参数:
numint, 可选

要生成的单位变换的数量。如果为 None(默认值),则生成单个变换。

shapeint 或 int 的元组,可选

单位变换的形状。如果指定,num 必须为 None。

返回:
transformRigidTransform 实例

单位变换。

附注

数组 API 标准支持

identity 对 NumPy 之外的 Python 数组 API 标准兼容后端具有实验性支持。请考虑通过设置环境变量 SCIPY_ARRAY_API=1 并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。

CPU

GPU

NumPy

不适用

CuPy

不适用

PyTorch

JAX

Dask

不适用

有关更多信息,请参阅 对数组 API 标准的支持

示例

>>> from scipy.spatial.transform import RigidTransform as Tf
>>> from scipy.spatial.transform import Rotation as R
>>> import numpy as np

创建单个单位变换

>>> tf = Tf.identity()
>>> tf.as_matrix()
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])
>>> tf.single
True

单位变换可以应用于向量而不会产生任何影响

>>> tf.apply([1, 2, 3])
array([1., 2., 3.])

单位变换与另一个变换组合时没有效果

>>> rng = np.random.default_rng()
>>> t = rng.random(3)
>>> r = R.random(rng=rng)
>>> tf = Tf.from_components(t, r)
>>> np.allclose((Tf.identity() * tf).as_matrix(),
...             tf.as_matrix(), atol=1e-12)
True

可以一次生成多个单位变换

>>> tf = Tf.identity(2)
>>> tf.as_matrix()
array([[[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.],
        [0., 0., 0., 1.]],
       [[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.],
        [0., 0., 0., 1.]]])
>>> tf.single
False
>>> len(tf)
2