Spec-Zone.ru › NumPy 1.18

numpy.matrix.view

метод

matrix.view(dtype=None, type=None)

Новая интерпретация массива с теми же данными.

Параметры
dtypedata-type or ndarray sub-class, optional

Описание типа данных возвращаемого представления, например, float32 или int16. Значение по умолчанию, None, приводит к тому, что представление будет иметь тот же тип данных, что и a. Этот аргумент также может быть указан как подкласс ndarray, который затем определяет тип возвращаемого объекта (это эквивалентно установлению параметра type).

typePython type, optional

Тип возвращаемого представления, например, ndarray или matrix. Опять же, значение по умолчанию None приводит к сохранению типа.

Примечания

a.view() используется двумя разными способами:

a.view(some_dtype) или a.view(dtype=some_dtype) создает представление памяти массива с другим типом данных. Это может привести к повторной интерпретации байтов памяти.

a.view(ndarray_subclass) или a.view(type=ndarray_subclass) просто возвращает экземпляр ndarray_subclass, который смотрит на тот же массив (такая же форма, тип данных и т. д.). Это не приводит к повторной интерпретации памяти.

Для a.view(some_dtype), если some_dtype имеет другое количество байтов на запись, чем предыдущий тип данных (например, преобразование обычного массива в структурированный массив), поведение представления нельзя предсказать только по внешнему виду a (показанному print(a)). Это также зависит от того, как a хранится в памяти. Поэтому, если a имеет порядок C, порядок Fortran, определен как срез или транспонирование и т. д., представление может давать разные результаты.

Примеры

>>> x = np.array([(1, 2)], dtype=[('a', np.int8), ('b', np.int8)])

Просмотр данных массива с помощью другого типа и типа данных:

>>> y = x.view(dtype=np.int16, type=np.matrix)
>>> y
matrix([[513]], dtype=int16)
>>> print(type(y))
<class 'numpy.matrix'>

Создание представления структурированного массива для его использования в расчётах

>>> x = np.array([(1, 2),(3,4)], dtype=[('a', np.int8), ('b', np.int8)])
>>> xv = x.view(dtype=np.int8).reshape(-1,2)
>>> xv
array([[1, 2],
       [3, 4]], dtype=int8)
>>> xv.mean(0)
array([2.,  3.])

Изменения в представлении изменяют исходный массив

>>> xv[0,1] = 20
>>> x
array([(1, 20), (3,  4)], dtype=[('a', 'i1'), ('b', 'i1')])

Использование представления для преобразования массива в recarray:

>>> z = x.view(np.recarray)
>>> z.a
array([1, 3], dtype=int8)

Представления разделяют данные:

>>> x[0] = (9, 10)
>>> z[0]
(9, 10)

Представления, которые изменяют размер типа данных (байты на запись), обычно следует избегать для массивов, определённых срезами, транспонированием, порядком Fortran и т. д.:

>>> x = np.array([[1,2,3],[4,5,6]], dtype=np.int16)
>>> y = x[:, 0:2]
>>> y
array([[1, 2],
       [4, 5]], dtype=int16)
>>> y.view(dtype=[('width', np.int16), ('length', np.int16)])
Traceback (most recent call last):
    ...
ValueError: To change to a dtype of a different size, the array must be C-contiguous
>>> z = y.copy()
>>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
array([[(1, 2)],
       [(4, 5)]], dtype=[('width', '<i2'), ('length', '<i2')])

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.matrix.view.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API