Spec-Zone.ru › NumPy 1.21

API типов данных

Стандартный массив может иметь 24 различных типа данных (и поддерживает добавление собственных типов). Все эти типы данных имеют перечисление типов, символ перечисления типа и соответствующий объект Python-типа скаляра массива (размещённый в иерархии). Также существуют стандартные определения C-типов для более удобной работы с элементами заданного типа данных. Для числовых типов также существуют определения C-типов, эквивалентные ширине разряда, и именованные номера типов, которые облегчают выбор требуемой точности.

Предупреждение

Имена типов в коде C более точно следуют соглашениям об именовании C. Имена типов в Python следуют соглашениям об именовании Python. Таким образом, NPY_FLOAT выбирает 32-битовый float в C, но numpy.float_ в Python соответствует 64-битовому double. Имена, соответствующие ширине разряда, могут использоваться как в Python, так и в C для повышения ясности.

Типы перечислений

перечислениеNPY_TYPES

Существует список определённых типов перечислений, предоставляющий основные 24 типа данных плюс некоторые полезные общие имена. Всякий раз, когда код требует номер типа, запрашивается один из этих перечисленных типов. Все типы называются NPY_{NAME}:

перечислениеNPY_BOOL

Значение перечисления для булевого типа, хранящегося как один байт. Может быть установлено только в значения 0 и 1.

перечислениеNPY_BYTE
перечислениеNPY_INT8

Значение перечисления для знакового целого числа 8 бит/1 байт.

перечислениеNPY_SHORT
перечислениеNPY_INT16

Значение перечисления для знакового целого числа 16 бит/2 байта.

перечислениеNPY_INT
перечислениеNPY_INT32

Значение перечисления для знакового целого числа 32 бит/4 байта.

перечислениеNPY_LONG

Эквивалентно либо NPY_INT, либо NPY_LONGLONG в зависимости от платформы.

перечислениеNPY_LONGLONG
перечислениеNPY_INT64

Значение перечисления для знакового целого числа 64 бит/8 байт.

перечислениеNPY_UBYTE
перечислениеNPY_UINT8

Значение перечисления для беззнакового целого числа 8 бит/1 байт.

перечислениеNPY_USHORT
перечислениеNPY_UINT16

Значение перечисления для беззнакового целого числа 16 бит/2 байта.

перечислениеNPY_UINT
перечислениеNPY_UINT32

Значение перечисления для беззнакового целого числа 32 бит/4 байта.

перечислениеNPY_ULONG

Эквивалентно либо NPY_UINT, либо NPY_ULONGLONG в зависимости от платформы.

перечислениеNPY_ULONGLONG
перечислениеNPY_UINT64

Значение перечисления для беззнакового целого числа 64 бит/8 байт.

перечислениеNPY_HALF
перечислениеNPY_FLOAT16

Значение перечисления для плавающей точки IEEE 754-2008 совместимого типа 16 бит/2 байта.

перечислениеNPY_FLOAT
перечислениеNPY_FLOAT32

Значение перечисления для плавающей точки IEEE 754 совместимого типа 32 бит/4 байта.

перечислениеNPY_DOUBLE
перечислениеNPY_FLOAT64

Значение перечисления для плавающей точки IEEE 754 совместимого типа 64 бит/8 байт.

перечислениеNPY_LONGDOUBLE

Значение перечисления для платформенно-специфичного типа плавающей точки, размер которого по крайней мере равен NPY_DOUBLE, но на многих платформах больше.

перечислениеNPY_CFLOAT
перечислениеNPY_COMPLEX64

Значение перечисления для 64-битного/8-байтного комплексного типа, состоящего из двух значений NPY_FLOAT.

перечислениеNPY_CDOUBLE
перечислениеNPY_COMPLEX128

Значение перечисления для 128-битного/16-байтного комплексного типа, состоящего из двух значений NPY_DOUBLE.

перечислениеNPY_CLONGDOUBLE

Значение перечисления для платформенно-специфичного комплексного типа плавающей точки, состоящего из двух значений NPY_LONGDOUBLE.

перечислениеNPY_DATETIME

Значение перечисления для типа данных, хранящего даты или даты и время с точностью, основанной на выбираемых единицах дат или времени.

перечислениеNPY_TIMEDELTA

Значение перечисления для типа данных, хранящего длины времени в целых значениях выбираемых единиц дат или времени.

перечислениеNPY_STRING

Значение перечисления для ASCII-строк переменного размера. Строки имеют фиксированный максимальный размер в данном массиве.

перечислениеNPY_UNICODE

Значение перечисления для UCS4-строк переменного размера. Строки имеют фиксированный максимальный размер в данном массиве.

перечислениеNPY_OBJECT

Значение перечисления для ссылок на произвольные объекты Python.

перечислениеNPY_VOID

В основном используется для хранения структурных типов, но может содержать произвольные двоичные данные.

Некоторые полезные псевдонимы указанных выше типов:

перечислениеNPY_INTP

Значение перечисления для знакового целочисленного типа, размер которого совпадает с размером указателя (void *). Этот тип используется во всех массивах индексов.

enumeratorNPY_UINTP

Значение перечисления для беззнакового целочисленного типа, размер которого такой же, как у указателя (void *).

enumeratorNPY_MASK

Значение перечисления типа, используемого для масок, например, с флагом итератора NPY_ITER_ARRAYMASK. Это эквивалентно NPY_UINT8.

enumeratorNPY_DEFAULT_TYPE

Тип по умолчанию, используемый, когда тип данных не указан явно, например, при вызове np.zero(shape). Это эквивалентно NPY_DOUBLE.

Другие полезные связанные константы:

NPY_NTYPES

Общее количество встроенных типов NumPy. Перечисление охватывает диапазон от 0 до NPY_NTYPES-1.

NPY_NOTYPE

Значение сигнала, гарантированно не являющееся действительным номером перечисления типа.

NPY_USERDEF

Начало номеров типов, используемых для типов пользовательских данных.

Различные символьные коды, указывающие определенные типы, также являются частью перечисленного списка. Ссылки на символы типов (если они вообще необходимы) всегда должны использовать эти перечисления. Формат такой: NPY_{NAME}LTR где {NAME} может быть

BOOL, BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG, LONGLONG, ULONGLONG, HALF, FLOAT, DOUBLE, LONGDOUBLE, CFLOAT, CDOUBLE, CLONGDOUBLE, DATETIME, TIMEDELTA, OBJECT, STRING, VOID

INTP, UINTP

GENBOOL, SIGNED, UNSIGNED, FLOATING, COMPLEX

Последняя группа {NAME}s соответствует буквам, используемым в спецификации строке типа интерфейса массива.

Определения

Максимальные и минимальные значения для целых чисел

NPY_MAX_INT{bits}, NPY_MAX_UINT{bits}, NPY_MIN_INT{bits}

Эти значения определены для {bits} = 8, 16, 32, 64, 128 и 256 и предоставляют максимальное (минимальное) значение соответствующего (беззнакового) целочисленного типа. Примечание: фактический целочисленный тип может быть недоступен на всех платформах (т. е. 128-битные и 256-битные целые числа встречаются редко).

NPY_MIN_{type}

Это определено для {type} = BYTE, SHORT, INT, LONG, LONGLONG, INTP

NPY_MAX_{type}

Это определено для всех значений {type} = BYTE, UBYTE, SHORT, USHORT, INT, UINT, LONG, ULONG, LONGLONG, ULONGLONG, INTP, UINTP

Количество битов в типах данных

Все NPY_SIZEOF_{CTYPE} константы имеют соответствующие NPY_BITSOF_{CTYPE} константы, определенные. NPY_BITSOF_{CTYPE} константы предоставляют количество битов в типе данных. В частности, доступные {CTYPE}s —

BOOL, CHAR, SHORT, INT, LONG, LONGLONG, FLOAT, DOUBLE, LONGDOUBLE

Связи разрядности с перечисленными типами

Все числовые типы данных (целые, с плавающей точкой и комплексные) имеют константы, определенные как конкретный номер перечисленного типа. Точно какой тип перечисления соответствует типу разрядности, зависит от платформы. В частности, доступными константами являются PyArray_{NAME}{BITS} , где {NAME} — INT, UINT, FLOAT, COMPLEX, а {BITS} может быть 8, 16, 32, 64, 80, 96, 128, 160, 192, 256 и 512. Очевидно, что не все разрядности доступны на всех платформах для всех числовых типов. Обычно доступны 8-, 16-, 32-, 64-битные целые числа; 32-, 64-битные числа с плавающей точкой; и 64-, 128-битные комплексные типы.

Целое число, которое может хранить указатель

Константы NPY_INTP и NPY_UINTP относятся к перечисленному целочисленному типу, достаточно большому для хранения указателя на данной платформе. Массивы индексов всегда должны быть преобразованы в NPY_INTP, так как размер массива имеет тип npy_intp.

Типы C

Существуют стандартные типы переменных для каждого числового типа данных и типа данных bool. Некоторые из них уже доступны в спецификации C. Вы можете создавать переменные в коде расширения с этими типами.

Булево

typenpy_bool

unsigned char; Константы NPY_FALSE и NPY_TRUE также определены.

(Без)знаковые целые числа

Беззнаковые версии целых чисел можно определить, добавив «u» в начало имени целого числа.

typenpy_byte

char

typenpy_ubyte

unsigned char

typenpy_short

short

typenpy_ushort

unsigned short

typenpy_int

int

typenpy_uint

unsigned int

typenpy_int16

16-битное целое число

typenpy_uint16

16-битное беззнаковое целое число

typenpy_int32

32-битное целое число

typenpy_uint32

32-битное беззнаковое целое число

typenpy_int64

64-битное целое число

typenpy_uint64

64-битное беззнаковое целое число

typenpy_long

long int

typenpy_ulong

unsigned long int

typenpy_longlong

long long int

typenpy_ulonglong

unsigned long long int

typenpy_intp

Py_intptr_t (целое число, размер которого равен размеру указателя на данной платформе).

typenpy_uintp

unsigned Py_intptr_t (целое число, размер которого равен размеру указателя на данной платформе).

Комплексные числа с плавающей точкой

typenpy_half

16-битное число с плавающей точкой

typenpy_float

32-битное число с плавающей точкой

typenpy_cfloat

32-битное комплексное число с плавающей точкой

typenpy_double

64-битное число с плавающей точкой

END_OF_DOCUMENT_MARKER
typenpy_cdouble

64-битное комплексное число двойной точности

typenpy_longdouble

длинная двойная точность

typenpy_clongdouble

длинное комплексное число двойной точности

Комплексные типы — это структуры с членами .real и .imag (в указанном порядке).

Имена разрядности

Также существуют определения типов для целых чисел со знаком, целых чисел без знака, чисел с плавающей точкой и комплексных чисел с плавающей точкой определенной разрядности. Доступные имена типов:

npy_int{bits}, npy_uint{bits}, npy_float{bits}, и npy_complex{bits}

где {bits} — количество бит в типе и может составлять 8, 16, 32, 64, 128 и 256 для целых типов; 16, 32, 64, 80, 96, 128 и 256 для чисел с плавающей точкой; и 32, 64, 128, 160, 192 и 512 для комплексных типов. Доступные разрядности зависят от платформы. Жирным шрифтом выделены разрядности, обычно доступные на всех платформах.

Форматирование printf

Для помощи в выводе определены следующие строки как правильные спецификаторы формата в командах printf и аналогичных командах.

NPY_LONGLONG_FMT
NPY_ULONGLONG_FMT
NPY_INTP_FMT
NPY_UINTP_FMT
NPY_LONGDOUBLE_FMT

© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/c-api/dtype.html

Spec-Zone.ru

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