API типов данных
Стандартный массив может иметь 24 различных типа данных (и поддерживает добавление собственных типов). Все эти типы данных имеют перечисление типов, символ перечисления типов и соответствующий объект типа скаляра Python (размещённый в иерархии). Также имеются стандартные определения типов C, чтобы упростить манипулирование элементами указанного типа данных. Для числовых типов также существуют определения типов C, эквивалентные разрядности, и именованные числа типов, которые упрощают выбор желаемой точности.
Предупреждение
Имена типов в коде C более точно следуют соглашениям именования C. Имена типов в Python следуют соглашениям именования Python. Таким образом, NPY_FLOAT выбирает 32-битовое число с плавающей запятой в 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 -
Значение перечисления для 16-битного/2-байтового типа с плавающей запятой, совместимого со стандартом IEEE 754-2008.
-
NPY_FLOAT
-
NPY_FLOAT32 -
Значение перечисления для 32-битного/4-байтового типа с плавающей запятой, совместимого со стандартом IEEE 754.
-
NPY_DOUBLE
-
NPY_FLOAT64 -
Значение перечисления для 64-битного/8-байтового типа с плавающей запятой, совместимого со стандартом IEEE 754.
-
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 -
В основном используется для хранения структур dtypes, но может содержать произвольные двоичные данные.
Некоторые полезные псевдонимы вышеперечисленных типов:
-
NPY_INTP -
Значение перечисления для знакового целого типа, размер которого такой же, как у указателя (void *). Этот тип используется всеми массивами индексов.
-
NPY_UINTP -
Значение перечисления для беззнакового целого типа, размер которого такой же, как у указателя (void *).
-
NPY_MASK -
Значение перечисления типа, используемого для масок, например, с флагом итератора
NPY_ITER_ARRAYMASK. Это эквивалентноNPY_UINT8.
-
NPY_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’ в начало имени целого числа.
-
npy_(u)byte -
(unsigned) char
-
npy_short -
short
-
npy_ushort -
unsigned short
-
npy_uint -
unsigned int
-
npy_int -
int
-
npy_int16 -
16-битное целое число
-
npy_uint16 -
16-битное беззнаковое целое число
-
npy_int32 -
32-битное целое число
-
npy_uint32 -
32-битное беззнаковое целое число
-
npy_int64 -
64-битное целое число
-
npy_uint64 -
64-битное беззнаковое целое число
-
npy_(u)long -
(unsigned) long int
-
npy_(u)longlong -
(unsigned long long int)
-
npy_intp -
Py_intptr_t (целое число, размер которого соответствует размеру указателя на платформе).
-
npy_uintp -
unsigned Py_intptr_t (целое число, размер которого соответствует размеру указателя на платформе).
(Комплексное) Число с плавающей точкой
-
npy_half -
16-битное число с плавающей точкой
-
npy_(c)float -
32-битное число с плавающей точкой
-
npy_(c)double -
64-битное double
-
npy_(c)longdouble -
long double
Комплексные типы — это структуры с членами .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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/c-api/dtype.html