Привет! Ты уже научился создавать массивы в NumPy. Теперь пришло время узнать, как получить информацию о массиве: его размер, форму, тип данных.
В этой статье мы разберём:
shape— размерность массиваsize— количество элементовdtype— тип данныхndim— количество измерений
- Что нужно знать перед началом
- Основная часть
- shape — размерность массива
- size — количество элементов
- dtype — тип данных элементов
- ndim — количество измерений
- Сравнение атрибутов
- Изменение формы массива
- Изменение типа данных
- Полный пример
- Задачи для закрепления
- Нюансы и подводные камни
- shape возвращает кортеж
- reshape требует совпадения размеров
- astype создаёт новый массив
- Шпаргалка
- Заключение
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный NumPy
- Базовое понимание массивов
Совет: Атрибуты массива — это первое, что нужно проверить при работе с данными.
Основная часть
shape — размерность массива
shape возвращает кортеж с размерами массива по каждому измерению.
import numpy as np
# Одномерный массив
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1.shape) # (5,)
# Двумерный массив
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2.shape) # (2, 3)
# Трёхмерный массив
arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr3.shape) # (2, 2, 2)Совет: Количество элементов в кортеже
shapeравноndim(количеству измерений).
size — количество элементов
size возвращает общее количество элементов в массиве.
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1.size) # 5
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2.size) # 6 (2 * 3)
arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr3.size) # 8 (2 * 2 * 2)Совет:
sizeравно произведению всех элементов вshape.
dtype — тип данных элементов
dtype показывает тип данных элементов в массиве.
arr_int = np.array([1, 2, 3])
print(arr_int.dtype) # int64 (или int32 в зависимости от системы)
arr_float = np.array([1.5, 2.3, 3.7])
print(arr_float.dtype) # float64
arr_bool = np.array([True, False, True])
print(arr_bool.dtype) # bool
arr_str = np.array(['a', 'b', 'c'])
print(arr_str.dtype) # <U1 (строка из 1 символа)Совет: Можно указать тип при создании:
arr = np.array([1, 2, 3], dtype=np.float32)
print(arr.dtype) # float32ndim — количество измерений
ndim возвращает количество измерений массива.
arr1 = np.array([1, 2, 3])
print(arr1.ndim) # 1
arr2 = np.array([[1, 2], [3, 4]])
print(arr2.ndim) # 2
arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])Совет:
ndimравно длине кортежаshape.
Сравнение атрибутов
| Атрибут | Что показывает | Пример для (2, 3) |
|---|---|---|
shape | Размерность | (2, 3) |
size | Количество элементов | 6 |
ndim | Число измерений | 2 |
dtype | Тип данных | int64 |
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("shape:", arr.shape) # (2, 3)
print("size:", arr.size) # 6
print("ndim:", arr.ndim) # 2
print("dtype:", arr.dtype) # int64Изменение формы массива
shape можно изменить с помощью reshape().
arr = np.array([1, 2, 3, 4, 5, 6])
print(arr.shape) # (6,)
# Превращаем в матрицу 2x3
reshaped = arr.reshape(2, 3)
print(reshaped)
# [[1 2 3]
# [4 5 6]]
print(reshaped.shape) # (2, 3)
# Можно в 3x2
reshaped2 = arr.reshape(3, 2)
print(reshaped2)
# [[1 2]
# [3 4]
# [5 6]]Важно:
reshape()не меняет исходный массив, а возвращает новый. Общее количество элементов должно совпадать.
Изменение типа данных
dtype можно изменить с помощью astype().
arr = np.array([1, 2, 3])
print(arr.dtype) # int64
arr_float = arr.astype(float)
print(arr_float) # [1. 2. 3.]
print(arr_float.dtype) # float64
arr_bool = arr.astype(bool)
print(arr_bool) # [ True True True]Совет:
astype()создаёт новый массив с указанным типом данных.
Полный пример
import numpy as np
# Создаём массив
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Исходный массив:")
print(arr)
print("\nАтрибуты:")
print(f"shape: {arr.shape}") # (2, 3)
print(f"size: {arr.size}") # 6
print(f"ndim: {arr.ndim}") # 2
print(f"dtype: {arr.dtype}") # int64
print("\nИзменение формы:")
reshaped = arr.reshape(3, 2)
print(reshaped)
print("\nИзменение типа:")
float_arr = arr.astype(float)
print(float_arr)Результат:
Исходный массив:
[[1 2 3]
[4 5 6]]
Атрибуты:
shape: (2, 3)
size: 6
ndim: 2
dtype: int64
Изменение формы:
[[1 2]
[3 4]
[5 6]]
Изменение типа:
[[1. 2. 3.]
[4. 5. 6.]]Задачи для закрепления
Задача 1. Создай массив 3×4 и выведи его shape, size, ndim.
Задача 2. Создай одномерный массив из 10 элементов и измени его форму на 2×5.
Задача 3. Создай массив целых чисел и преобразуй его в тип float.
Задача 4. Что вернёт shape для одномерного массива?
Задача 5. Как проверить тип данных элементов массива?
Ответы:
Задача 1.
import numpy as np
arr = np.zeros((3, 4))
print("shape:", arr.shape) # (3, 4)
print("size:", arr.size) # 12
print("ndim:", arr.ndim) # 2Задача 2.
arr = np.arange(10)
print(arr.shape) # (10,)
reshaped = arr.reshape(2, 5)
print(reshaped)
# [[0 1 2 3 4]
# [5 6 7 8 9]]Задача 3.
arr = np.array([1, 2, 3, 4])
float_arr = arr.astype(float)
print(float_arr) # [1. 2. 3. 4.]Задача 4.
# shape возвращает (n,), где n — количество элементов.Задача 5.
# С помощью атрибута dtype: arr.dtypeНюансы и подводные камни
shape возвращает кортеж
Даже для одномерного массива shape — это кортеж.
arr = np.array([1, 2, 3])
print(type(arr.shape)) # <class 'tuple'>reshape требует совпадения размеров
Общее количество элементов должно совпадать.
arr = np.arange(6)
# arr.reshape(2, 4) # Ошибка! 6 != 8
arr.reshape(2, 3) # OKastype создаёт новый массив
astype() не изменяет исходный массив.
arr = np.array([1, 2, 3])
arr.astype(float)
print(arr.dtype) # int64 (не изменился)
arr = arr.astype(float) # Сохраняем результат
print(arr.dtype) # float64Шпаргалка
| Атрибут | Назначение | Пример |
|---|---|---|
shape | Размерность | (3, 4) |
size | Количество элементов | 12 |
ndim | Количество измерений | 2 |
dtype | Тип данных | int64 |
reshape() | Изменение формы | arr.reshape(2, 6) |
astype() | Изменение типа | arr.astype(float) |
Заключение
Сегодня мы:
- Изучили атрибуты
shape,size,dtype,ndim - Научились получать информацию о массиве
- Изменять форму и тип данных
- Практические примеры





