API типов данных
Стандартный массив может содержать 24 различных типа данных (и имеет некоторую поддержку добавления собственных типов). Все эти типы данных имеют перечисляемый тип, перечисляемый символ типа и соответствующий объект типа массива Python (размещённый в иерархии). Также имеются стандартные определения C-типов, упрощающие работу с элементами заданного типа данных. Для числовых типов также имеются эквивалентные определения C-типов с шириной в битах и именованные номера типов, облегчающие выбор желаемой точности.
Предупреждение
Имена типов в коде C более точно следуют соглашениям именования языка C. Имена типов в Python следуют соглашениям Python. Таким образом, NPY_FLOAT выбирает 32-битное число с плавающей точкой в C, но numpy.float_ в Python соответствует 64-битному двойному числу. Имена с указанием ширины в битах могут использоваться как в Python, так и в C для большей ясности.
Перечисляемые типы
Существует список перечисляемых типов, определяющих 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 -
Тип по умолчанию, используемый, когда тип данных явно не указан, например, при вызове 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:
Справочные значения ширины в битах для перечисляемых номеров типов
Все числовые типы данных (целые, с плавающей точкой и комплексные) имеют константы, определённые как конкретные числа перечислимого типа. Точный тип перечисления, к которому относится тип с заданной разрядностью, зависит от платформы. В частности, доступные константы — это 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 -
(беззнаковый) char
-
npy_(u)short -
(беззнаковый) short
-
npy_(u)int -
(беззнаковый) int
-
npy_(u)long -
(беззнаковый) long int
-
npy_(u)longlong -
(беззнаковый long long int)
-
npy_(u)intp -
(беззнаковый) Py_intptr_t (целое число, размер которого равен размеру указателя на данной платформе).
(Комплексное) число с плавающей точкой
-
npy_(c)float -
float
-
npy_(c)double -
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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/c-api.dtype.html