Spec-Zone.ru › NumPy 1.21

numpy.chararray.view

метод

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

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

Примечание

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

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

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

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

Тип возвращаемого представления, например, 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)

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

>>> 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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.chararray.view.html

Spec-Zone.ru

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