Spec-Zone.ru › NumPy 1.14

numpy.ma.MaskedArray.view

MaskedArray.view(dtype=None, type=None) [source]

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

Параметры:

dtype : тип данных или подкласс ndarray, необязательно

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

type : тип Python, необязательно

Тип возвращаемого представления, например, 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.matrixlib.defmatrix.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
>>> print(x)
[(1, 20) (3, 4)]

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

>>> z = x.view(np.recarray)
>>> z.a
array([1], 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):
  File "<stdin>", line 1, in <module>
ValueError: new type not compatible with array.
>>> z = y.copy()
>>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
array([[(1, 2)],
       [(4, 5)]], dtype=[('width', '<i2'), ('length', '<i2')])

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.ma.MaskedArray.view.html

Spec-Zone.ru

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