0Pricing
Python Academy · Урок

Массивы 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 — локальная установка не требуется.

Все уроки этого курса

  1. Массивы NumPy и dtypes
  2. Операции над массивами и broadcasting
  3. Индексация, срезы и расширенная индексация
  4. Линейная алгебра с NumPy
← Назад к Python Academy