Индексы и срезы у одномерного массива работают так же, как у списка Python: a[i] — элемент, a[-1] —
последний, a[начало:конец:шаг] — кусок. Потренируемся на максимальных температурах Москвы за год:
import numpy as np
tmax = np.loadtxt("data/moscow_2025.csv", delimiter=",", skiprows=1, usecols=2)
print(tmax.shape)(365,)
Один элемент
Индексы считаются с нуля: 1 января — tmax[0], 31 декабря — tmax[364] или, проще, tmax[-1]:
print(tmax[0], tmax[-1])
print(tmax[364])-3.2 -2.0 -2.0
Элемент за пределами массива вызывает ошибку — в году 365 дней, и последний индекс 364:
tmax[365]IndexError: index 365 is out of bounds for axis 0 with size 365
Срезы
Срез tmax[начало:конец] возвращает массив из элементов с индексами от начало до конец − 1 — конец
не входит, как у range и arange. Любую границу можно опустить: [:31] — с начала, [-7:] — до конца.
print(tmax[:5]) # первые пять дней
print(tmax[-7:]) # последняя неделя
print(len(tmax[:31]))[-3.2 -3.2 -3.7 -7.2 -7.2] [-1.4 -3.3 -4.3 -6. -6.4 -4.8 -2. ] 31
Сохраните в jan максимальные температуры января (первые 31 день года), а в jan_avg — среднюю температуру января.
Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
jan = ...
jan_avg = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
jan = tmax[:31]
jan_avg = jan.mean()Сохраните в last10 максимальные температуры последних десяти дней года.
[-10:].Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
last10 = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
last10 = tmax[-10:]Шаг среза
Третье число в срезе — шаг: [::7] — каждый седьмой элемент, начиная с первого. Так можно взять один день
недели за весь год. 2025 год начался в среду, значит, среды — это индексы 0, 7, 14…:
wednesdays = tmax[::7]
print(len(wednesdays))
print(wednesdays[:5])53 [-3.2 -4.2 -2.4 -2.9 -4.1]
Отрицательный шаг идёт с конца: [::-1] — массив задом наперёд.
Первый понедельник 2025 года — 6 января, это индекс 5. Сохраните в mondays максимальные температуры всех понедельников
года, а в monday_avg — их среднее.
[5::7].Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
mondays = ...
monday_avg = ...Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
mondays = tmax[5::7]
monday_avg = mondays.mean()Что получится: np.arange(10)[2:8:3]?
Замена значений
В элемент и в срез можно присвоить новое значение — массив изменится на месте. Одно число в срез присваивается всем его элементам:
hours = np.array([5.0, 7.5, 8.0, 99.0, 7.0])
hours[3] = 8.5 # одно значение
print(hours)
hours[:2] = 6.0 # сразу несколько
print(hours)[5. 7.5 8. 8.5 7. ] [6. 6. 8. 8.5 7. ]
В readings — показания датчика за 8 часов. Четвёртое показание (индекс 3) записано с ошибкой — исправьте
его на 21.5. А два последних часа датчик был выключен: запишите в них 0.
readings[3] = 21.5.[-2:]; одно число присвоится обоим.Заготовка упражнения обновилась с тех пор, как вы сохранили свой код.
Вернуть заготовку? Ваш код в этом упражнении будет удалён.
readings = np.array([20.1, 20.4, 20.9, 99.9, 21.8, 22.0, 21.7, 21.4])Упражнение пока не решено, поэтому для ячеек ниже выполнено эталонное решение — ваш код не изменён.
readings = np.array([20.1, 20.4, 20.9, 99.9, 21.8, 22.0, 21.7, 21.4])
readings[3] = 21.5
readings[-2:] = 0Итоги
a[i]— элемент, индексы с нуля;a[-1]— последний; за краем —IndexError.a[начало:конец:шаг]— срез; конец не входит; границы можно опускать;[::-1]— задом наперёд.- Присваивание в элемент или срез меняет массив на месте.