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 -
В основном используется для хранения структурных типов данных, но может содержать произвольные двоичные данные.
Некоторые полезные псевдонимы вышеуказанных типов:
-
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.16.1/reference/c-api.dtype.html