Menu
CoddyTech

Индексация и срезы

Часть раздела Данные и графики путешествия по Machine Learning на Coddy. Урок 8 из 60.

Массивы индексируются, как списки, начиная с 0. Пять дней занятий на фортепиано, в минутах:

practice = np.array([20, 0, 35, 15, 40])
print(practice[0])    # первый
print(practice[-1])   # последний
print(practice[1:4])  # позиции с 1 по 3

Это выводит:

20
40
[ 0 35 15]

Для обращения к элементу двумерного массива укажи строку и столбец в одной паре скобок, сначала строку. Каждая строка массива stock — это магазин, каждый столбец — продукт:

Сетка из 3 строк и 4 столбцов с числами; ячейка в строке 1, столбце 2 со значением 4 выделена самым тёмным цветом, а весь столбец 3 со значениями 6, 3 и 8 выделен

stock = np.array([[5, 8, 2, 6], [9, 1, 4, 3], [7, 0, 6, 8]])
print(stock[1, 2])  # одно значение
print(stock[0])     # целая строка
print(stock[:, 3])  # целый столбец

Это выводит:

4
[5 8 2 6]
[6 3 8]

В месте для строки двоеточие означает каждую строку, а срез вроде 0:2 — некоторые из них. Поэтому data[:, column] — это один признак для каждого образца.

challenge icon

Задание

Легко

Отчёт отеля содержит ошибки. В bookings каждая строка соответствует неделе, а каждый столбец — дню недели, с понедельника по воскресенье. Программа считывает номер недели и дня, начиная с 1.

В каждой строке есть одна ошибка. Исправь их так, чтобы они соответствовали подписям:

  • Week: вся неделя
  • Weekend: её последние два дня, срез
  • Day: этот день для каждой недели
  • Booked: этот конкретный день

Для недели 3, дня 5:

Week 3: [11 12 13 17 20 24 26]
Weekend: [24 26]
Day 5: [18 19 20 21]
Booked: 20

Попробуйте сами

import numpy as np

# Забронированные номера в небольшом отеле: одна строка на неделю (недели с 1 по 4),
# один столбец на день (дни с 1 по 7, с понедельника по воскресенье)
bookings = np.array([
    [12, 15, 14, 16, 18, 25, 27],
    [10, 13, 15, 14, 19, 26, 28],
    [11, 12, 13, 17, 20, 24, 26],
    [9, 14, 16, 15, 21, 27, 29],
])
week = int(input())
day = int(input())

# Отчёт выводит неверные числа: исправьте строки ниже
row = bookings[week]
print(f"Week {week}: {row}")
print(f"Weekend: {row[5:6]}")
print(f"Day {day}: {bookings[day - 1]}")
print(f"Booked: {bookings[day - 1, week - 1]}")
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Данные и графики

Потренируйтесь самостоятельно: Онлайн-компилятор Python