API типов данных
Стандартный массив может иметь 24 различных типа данных (и поддерживает добавление собственных типов). Эти типы данных все имеют перечислимый тип, перечислимый символ типа и соответствующий объект Python типа скаляра массива (размещённый в иерархии). Также существуют стандартные C-typedef для более удобного управления элементами заданного типа данных. Для числовых типов также существуют эквивалентные C-typedef с разрядностью и именованные числовые типы, которые облегчают выбор желаемой точности.
Предупреждение
Имена типов в коде C более точно следуют соглашениям именования языка C. Имена типов в Python следуют соглашениям Python. Таким образом, NPY_FLOAT выбирает 32-битное число с плавающей точкой в 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 -
Тип по умолчанию, используемый, когда тип данных явно не указан, например, при вызове 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.11.0/reference/c-api.dtype.html