numpy.core.defchararray.chararray.view
-
chararray.view(dtype=None, type=None) -
Новый вид массива с теми же данными.
Параметры: 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.core.defchararray.chararray.view.html