scipy.spatial.transform.Rotation.
__getitem__#
- Rotation.__getitem__(self, indexer)#
从对象中提取给定索引的旋转。
创建一个新的
Rotation
实例,其中包含存储在此对象中的旋转的子集。- 参数:
- indexerindex、slice 或索引数组
指定要提取的旋转。必须指定单个索引器,即,就像索引 1 维数组或列表一样。
- 返回:
- rotation
Rotation
实例 - 包含
单个旋转,如果 indexer 是单个索引
如果 indexer 是切片或索引数组,则为旋转堆栈。
- rotation
- 引发:
- 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. ]])