API типов данных
Стандартный массив может иметь 24 различных типа данных (и поддерживает добавление собственных типов). Эти типы данных все имеют перечислимый тип, символ перечислимого типа и соответствующий объект типа скаляра Python (размещённый в иерархии). Также существуют стандартные определения C-типов для упрощения работы с элементами заданного типа данных. Для числовых типов также существуют определения C-типов, соответствующие разрядности битов, и именованные номера типов, что облегчает выбор желаемой точности.
Предупреждение
Имена типов в коде C более точно следуют соглашениям именования C. Имена типов в Python следуют соглашениям именования Python. Таким образом, NPY_FLOAT выбирает 32-битовое число с плавающей точкой в C, но numpy.float_ в Python соответствует 64-битовому двойному числу. Имена, указывающие разрядность битов, могут использоваться как в 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 -
В основном используется для хранения структурных типов данных, но может содержать произвольные двоичные данные.
Некоторые полезные псевдонимы вышеперечисленных типов:
-
NPY_INTP -
Значение перечисления для знакового целого типа, размер которого совпадает с размером указателя (void *). Этот тип используется для всех массивов индексов.
-
NPY_UINTP -
Значение перечисления для беззнакового целого типа, размер которого совпадает с размером указателя (void *).
-
NPY_MASK -
Значение перечисления типа, используемого для масок, например, со флагом итератора
NPY_ITER_ARRAYMASK. Это эквивалентноNPY_UINT8.
-
NPY_DEFAULT_TYPE -
Тип по умолчанию, используемый при явном отсутствии dtype, например, при вызове 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
Для каждого из числовых типов данных и булевого типа данных существуют стандартные типы переменных. Некоторые из них уже доступны в спецификации 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/c-api/dtype.html