Массивы NumPy и dtypes
Создавайте ndarray, изучайте dtypes и свойства массивов.
«Массивы NumPy и dtypes» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Что такое NumPy
NumPy предоставляет ndarray — массив с фиксированным типом и непрерывной областью памяти, поддерживающий векторизованные операции, на порядки более быстрые, чем операции со списками Python.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr) # [1 2 3 4 5]
print(arr * 2) # [ 2 4 6 8 10] (no Python loop)Создание массивов
Распространённые функции создания: np.array(), np.zeros(), np.ones(), np.arange(), np.linspace().
import numpy as np
print(np.zeros((2, 3))) # 2x3 array of 0.0
print(np.ones(5)) # [1. 1. 1. 1. 1.]
print(np.arange(0, 10, 2)) # [0 2 4 6 8]
print(np.linspace(0, 1, 5)) # [0. 0.25 0.5 0.75 1. ]Типы данных
Каждый массив NumPy имеет единственный dtype. Распространённые типы данных: int32, int64, float32, float64, bool, complex128.
import numpy as np
a = np.array([1, 2, 3]) # int64 by default
b = np.array([1.0, 2.0]) # float64
c = np.array([1, 2], dtype=np.float32)
print(a.dtype) # int64
print(c.dtype) # float32Форма массива и число измерений
shape — это кортеж размеров измерений. ndim — количество измерений. size — общее число элементов.
import numpy as np
m = np.ones((3, 4))
print(m.shape) # (3, 4)
print(m.ndim) # 2
print(m.size) # 12
print(m.dtype) # float64Изменение формы
reshape() возвращает представление с новой формой (данные остаются теми же). flatten() возвращает копию в виде одномерного массива.
import numpy as np
arr = np.arange(12)
mat = arr.reshape(3, 4)
print(mat)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
print(mat.flatten()) # [ 0 1 2 3 ...]Преобразование типов
Используйте arr.astype(dtype), чтобы преобразовать массив к другому типу. Эта функция всегда возвращает копию.
import numpy as np
arr = np.array([1, 2, 3])
float_arr = arr.astype(np.float64)
print(float_arr) # [1. 2. 3.]
print(float_arr.dtype) # float64Случайные массивы
Создавайте случайные массивы с помощью np.random: равномерно распределённые, нормально распределённые и целочисленные.
import numpy as np
rng = np.random.default_rng(seed=42) # reproducible
print(rng.random(5)) # 5 uniform [0,1)
print(rng.standard_normal(3)) # 3 normal(0,1)
print(rng.integers(1, 10, 4)) # 4 ints [1,10)Проверка памяти массива
itemsize показывает число байт на элемент; nbytes — общее число байт.
import numpy as np
arr = np.zeros(1_000_000, dtype=np.float64)
print(arr.itemsize) # 8
print(arr.nbytes) # 8_000_000 (8 MB)
small = arr.astype(np.float32)
print(small.nbytes) # 4_000_000 (4 MB)np.empty и np.full
np.empty выделяет память без инициализации (быстро). np.full заполняет массив постоянным значением.
import numpy as np
e = np.empty((2,3)) # uninitialised — random garbage values
f = np.full((2,3), fill_value=7)
print(f)
# [[7 7 7]
# [7 7 7]]Копия и представление
Срез массива NumPy возвращает представление (без копирования). Изменение представления изменяет исходный массив. Используйте .copy(), чтобы получить независимый массив.
import numpy as np
arr = np.array([1, 2, 3, 4])
view = arr[1:3]
view[0] = 99
print(arr) # [ 1 99 3 4] — original changed!
copy = arr[1:3].copy()
copy[0] = 0
print(arr) # unchangedСтруктурированные массивы
Структурированные массивы хранят разнородные данные (подобно структуре C) в одном ndarray с именованными полями.
import numpy as np
dt = np.dtype([('name', 'U10'), ('age', np.int32), ('score', np.float64)])
people = np.array([
('Alice', 30, 95.5),
('Bob', 25, 87.3),
], dtype=dt)
print(people['name']) # ['Alice' 'Bob']Быстрая проверка
Что возвращает arr.reshape(3, 4)?
Итоги
ndarray NumPy — это массив с фиксированным типом и непрерывной областью памяти. Основные атрибуты: shape, dtype, ndim, nbytes. Срезы возвращают представления; для независимого массива используйте .copy(). Выбирайте наименьший подходящий тип данных, чтобы экономить память.
Часто задаваемые вопросы
Урок «Массивы NumPy и dtypes» бесплатный?
Да — полный текст урока «Массивы NumPy и dtypes» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Массивы NumPy и dtypes»?
Создавайте ndarray, изучайте dtypes и свойства массивов. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Массивы NumPy и dtypes»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Массивы NumPy и dtypes
- Операции над массивами и broadcasting
- Индексация, срезы и расширенная индексация
- Линейная алгебра с NumPy