Spec-Zone.ru › NumPy 1.19

numpy.matrix.view

метод

matrix.view([dtype][, type])

Новый вид массива с теми же данными.

Примечание

Передача None для dtype отличается от пропуска параметра, так как первый вызывает dtype(None), который является псевдонимом для dtype('float_').

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

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

typePython type, optional

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

Примечания

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.19/reference/generated/numpy.matrix.view.html

Spec-Zone.ru

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