scipy.spatial.transform.Rotation.

__getitem__#

Вращение.__getitem__(self, индексатор)#

Извлечение вращения(ий) по заданному(ым) индексу(ам) из объекта.

Создать новый Rotation экземпляр, содержащий подмножество вращений, хранящихся в этом объекте.

Параметры:
индексаториндекс, срез или массив индексов

Указывает, какое(ие) вращение(я) извлечь. Должен быть указан один индексатор, т.е. как при индексации одномерного массива или списка.

Возвращает:
вращение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.        ]])