Типы данных NumPy
NumPy поддерживает гораздо больше типов данных, чем встроенные типы Python, и они в основном соответствуют типам данных языка C, причём некоторые из них соответствуют встроенным типам Python. В следующей таблице перечислены часто используемые базовые типы NumPy.
| Name | Описание |
|---|---|
| bool_ | Логический тип данных (True или False) |
| int_ | Целочисленный тип по умолчанию (аналогичен long в C, int32 или int64) |
| intc | То же, что тип int в C, обычно int32 или int64 |
| intp | Целочисленный тип, используемый для индексации (аналогичен ssize_t в C, обычно всё ещё int32 или int64) |
| int8 | Byte (-128 до 127) |
| int16 | Целое число (от -32768 до 32767) |
| int32 | Целое число (от -2147483648 до 2147483647) |
| int64 | Целое число (от -9223372036854775808 до 9223372036854775807) |
| uint8 | Беззнаковое целое число (от 0 до 255) |
| uint16 | Беззнаковое целое число (от 0 до 65535) |
| uint32 | Беззнаковое целое число (от 0 до 4294967295) |
| uint64 | Беззнаковое целое число (от 0 до 18446744073709551615) |
| float_ | Сокращение для типа float64 |
| float16 | Число с плавающей запятой половинной точности, включая: 1 бит знака, 5 бит экспоненты, 10 бит мантиссы |
| float32 | Число с плавающей запятой одинарной точности, включая: 1 бит знака, 8 бит экспоненты, 23 бита мантиссы |
| float64 | Число с плавающей запятой двойной точности, включая: 1 бит знака, 11 бит экспоненты, 52 бита мантиссы |
| complex_ | Сокращение для типа complex128, т. е. 128-битное комплексное число |
| complex64 | Комплексное число, представленное двумя 32-битными числами с плавающей запятой (действительная и мнимая части) |
| complex128 | Комплексное число, представленное двумя 64-битными числами с плавающей запятой (действительная и мнимая части) |
Числовые типы NumPy на самом деле являются экземплярами объектов dtype, каждый из которых соответствует уникальному символу, включая np.bool_, np.int32, np.float32 и т. д.
Объект типа данных (dtype)
Объекты типов данных (экземпляры класса numpy.dtype) используются для описания того, как используется область памяти, соответствующая массиву. Они описывают следующие аспекты данных:
- Тип данных (целочисленный, с плавающей запятой или объект Python)
- Размер данных (например, сколько байтов целое число занимает при хранении)
- Порядок байтов данных (little-endian или big-endian)
- В случае структурированных типов — имена полей, тип данных каждого поля и часть блока памяти, занимаемая каждым полем
- Если тип данных является подмассивом, то каковы его форма и тип данных.
Порядок байтов определяется предварительной настройкой типа данных<или>, чтобы выбрать.<Означает little-endian (наименее значимый байт хранится по наименьшему адресу, т. е. младшая группа байтов размещается первой).>Означает big-endian (наиболее значимый байт хранится по наименьшему адресу, т. е. старшая группа байтов размещается первой).
Объекты dtype создаются с использованием следующего синтаксиса:
numpy.dtype(object, align, copy)
- object — объект типа данных, в который выполняется преобразование
- align — если true, дополнить поля отступами, чтобы сделать его похожим на C-структуру.
- copy — копировать объект dtype; если false, это ссылка на встроенный объект типа данных.
Примеры
Далее мы можем понять это на примерах.
Пример 1
Результат вывода:
int32
Пример 2
Результат вывода:
int32
Пример 3
Результат вывода:
int32
В следующем примере демонстрируется использование структурированных типов данных; будут созданы поля типа и соответствующие фактические типы.
Пример 4
Результат вывода:
[('age', 'i1')]
Пример 5
Результат вывода:
[(10,) (20,) (30,)]
Пример 6
Результат вывода:
[10 20 30]
Следующий пример определяет структурированный тип данных student, содержащий строковое поле name, целочисленное поле age и поле marks с плавающей точкой, и применяет этот dtype к объекту ndarray.
Пример 7
Результат вывода:
[('name', 'S20'), ('age', 'i1'), ('marks', 'f4')]
Пример 8
Результат вывода:
[(b'abc', 21, 50.) (b'xyz', 18, 75.)]
Каждый встроенный тип имеет уникальный символьный код, который его определяет, следующим образом:
| Символ | Соответствующий тип |
|---|---|
| b | Boolean |
| i | (Знаковое) целое число |
| u | Беззнаковое целое |
| f | Число с плавающей запятой |
| c | Комплексное число с плавающей запятой |
| m | timedelta (интервал времени) |
| M | datetime (дата и время) |
| O | (Python) объект |
| S, a | (байтовая) строка |
| U | Юникод |
| V | Необработанные данные (void) |