
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 предоставляет глубокий контроль над тем, как данные представлены и хранятся. От базового понимания типов данных до создания собственных структур и управления порядком байтов — знание всех этих аспектов делает вас гораздо более подготовленным к сложным задачам научного программирования и анализа данных.
Содержание: