scipy.spatial.transform.Rotation.

__getitem__#

Rotation.__getitem__(self, indexer)#

从对象中提取给定索引的旋转。

创建一个新的 Rotation 实例,其中包含存储在此对象中的旋转的子集。

参数:
indexerindex、slice 或索引数组

指定要提取的旋转。必须指定单个索引器,即,就像索引 1 维数组或列表一样。

返回:
rotationRotation 实例
包含
  • 单个旋转,如果 indexer 是单个索引

  • 如果 indexer 是切片或索引数组,则为旋转堆栈。

引发:
TypeError 如果实例是作为单个旋转创建的。

示例

>>> from scipy.spatial.transform import Rotation as R
>>> rs = R.from_quat([
... [1, 1, 0, 0],
... [0, 1, 0, 1],
... [1, 1, -1, 0]])  # These quats are normalized
>>> rs.as_quat()
array([[ 0.70710678,  0.70710678,  0.        ,  0.        ],
       [ 0.        ,  0.70710678,  0.        ,  0.70710678],
       [ 0.57735027,  0.57735027, -0.57735027,  0.        ]])

使用单个索引进行索引

>>> a = rs[0]
>>> a.as_quat()
array([0.70710678, 0.70710678, 0.        , 0.        ])

数组切片

>>> b = rs[1:3]
>>> b.as_quat()
array([[ 0.        ,  0.70710678,  0.        ,  0.70710678],
       [ 0.57735027,  0.57735027, -0.57735027,  0.        ]])

列表理解将每个旋转拆分为自己的对象

>>> c = [r for r in rs]
>>> print([r.as_quat() for r in c])
[array([ 0.70710678,  0.70710678,  0.        ,  0.        ]),
 array([ 0.        ,  0.70710678,  0.        ,  0.70710678]),
 array([ 0.57735027,  0.57735027, -0.57735027,  0.        ])]

拆分旋转的连接将恢复原始对象

>>> R.concatenate([a, b]).as_quat()
array([[ 0.70710678,  0.70710678,  0.        ,  0.        ],
       [ 0.        ,  0.70710678,  0.        ,  0.70710678],
       [ 0.57735027,  0.57735027, -0.57735027,  0.        ]])