API типов данных
Стандартный массив может содержать 24 различных типа данных (и имеет некоторую поддержку добавления собственных типов). Эти типы данных имеют перечислимый тип, перечислимый символ типа и соответствующий объект скаляра Python-типа массива (размещенный в иерархии). Также существуют стандартные C-типы typedef, чтобы упростить работу с элементами заданного типа данных. Для числовых типов также существуют эквивалентные C-typedef с шириной в битах и именованные номера типов, которые упрощают выбор требуемой точности.
Предупреждение
Имена типов в коде C более точно следуют соглашениям об именовании C. Имена Python-типов следуют соглашениям об именовании Python. Таким образом, NPY_FLOAT подбирает 32-битный float в C, но numpy.float_ в Python соответствует 64-битному double. Имена с указанием разрядности могут использоваться как в 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 -
Тип по умолчанию, используемый, когда тип 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 это
Ссылки с указанием разрядности на перечисленные номера типов
Все числовые типы данных (целые, с плавающей точкой и комплексные) имеют константы, определённые как конкретные числа перечислений. Точный тип перечисления, к которому относится тип с заданной разрядностью, зависит от платформы. В частности, доступные константы — 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
© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/c-api.dtype.html