NumPy — мощный инструмент для научных вычислений в Python, и одной из его ключевых особенностей является возможность явного контроля над типами данных в массивах. В этой статье мы углубимся в понимание атрибута dtype
и узнаем, как он может помочь вам в работе с данными.
Атрибут dtype
массива в NumPy показывает тип данных элементов в массиве. В отличие от стандартных списков Python, где элементы могут иметь разные типы данных, массивы в NumPy имеют однородный тип данных.
import numpy as np
array = np.array([1, 2, 3, 4, 5])
print(array.dtype)
# int32
Этот массив явно содержит целые числа, и dtype
подтверждает это, указывая, что тип данных элементов массива — 32-битное целое число.
array_float = np.array([1.2, 2.5, 3.1, 4.7, 5.0])
print(array_float.dtype)
# float64
В этом массиве у нас есть вещественные числа, и dtype
указывает на это, показывая, что тип данных — 64-битное вещественное число.
Вы также можете явно указать dtype
при создании массива:
array_int32 = np.array([1, 2, 3, 4, 5], dtype=np.int32)
print(array_int32.dtype)
# int32
Вы можете изменить тип данных массива с помощью метода astype
.
array = np.array([1.5, 2.6, 3.7, 4.8])
print(array.dtype)
int_array = array.astype(np.int32)
print(int_array.dtype)
# float64
# int32
В NumPy имеется множество встроенных типов данных, которые позволяют эффективно представлять и обрабатывать данные различной природы. Вот краткий обзор основных типов данных в NumPy:
Целые числа:
int8
: 8-битное целое со знаком (-128 до 127).int16
: 16-битное целое со знаком (-32,768 до 32,767).int32
: 32-битное целое со знаком (-2^31 до 2^31 - 1).int64
: 64-битное целое со знаком (-2^63 до 2^63 - 1).Беззнаковые целые числа:
uint8
: 8-битное беззнаковое целое (0 до 255).uint16
: 16-битное беззнаковое целое (0 до 65,535).uint32
: 32-битное беззнаковое целое (0 до 2^32 - 1).uint64
: 64-битное беззнаковое целое (0 до 2^64 - 1).Вещественные числа (плавающая точка):
float16
: половинная точность.float32
: одинарная точность (стандарт IEEE 754).float64
: двойная точность (стандарт IEEE 754).Комплексные числа:
complex64
: Комплексные числа с двумя 32-битными вещественными компонентами.complex128
: Комплексные числа с двумя 64-битными вещественными компонентами.Булев тип:
bool
: Хранит значения True или False.Строковые и символьные типы:
string_
: Строка фиксированной длины.unicode_
: Unicode-строка фиксированной длины.Обобщенные типы и пользовательские dtypes:
object
: Тип для объектов Python.void
: Без типа, обычно используется для создания структурированных массивов.Даты и время:
datetime64
: Дата и время.timedelta64
: Разница между двумя датами/временами.Другие:
busday
: Рабочий день на базе 64-битного целого.В NumPy можно определять собственные структурированные типы данных. Это позволяет создавать массивы, которые по сути являются таблицами с разными типами данных в разных столбцах.
person_dtype = np.dtype({
'names': ('name', 'age', 'weight'),
'formats': ('U10', 'i4', 'f8')
})
people = np.array([('Alice', 24, 55.5), ('Bob', 30, 75.2)], dtype=person_dtype)
print(people)
Здесь мы создали массив из двух записей, каждая из которых содержит имя (строка длиной до 10 символов), возраст (целое 32-битное число) и вес (вещественное 64-битное число).
float64
к int32
приведет к округлению значений.dtype
: При выполнении операций между массивами с разными dtype
, NumPy будет пытаться "продвигать" типы данных. Это может привести к неожиданным результатам.Атрибут dtype
в NumPy предоставляет глубокий контроль над тем, как данные представлены и хранятся. От базового понимания типов данных до создания собственных структур и управления порядком байтов — знание всех этих аспектов делает вас гораздо более подготовленным к сложным задачам научного программирования и анализа данных.
Содержание: