scipy.spatial.transform.Rotation.

__getitem__#

Rotation.__getitem__()#

從物件中提取給定索引的旋轉。

建立一個新的 Rotation 實例,其中包含儲存在此物件中的旋轉子集。

參數:
indexer索引、切片或索引陣列

指定要提取哪個或哪些旋轉。 必須指定單一索引器,即如同索引一維陣列或列表。

回傳:
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.        ]])