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. Вы можете создавать переменные в коде расширения с этими типами.
Булево
(Без)знаковые целые числа
Беззнаковые версии целых чисел можно определить, добавив «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-битное число с плавающей точкой
- 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