Выбор ответа Junior NumPy: массивы и векторизация спрашивают часто обновлено

Срез NumPy это представление

Вопрос

Что выведет код?

import numpy as np
a = np.array([1, 2, 3, 4])
b = a[1:3]
b[0] = 99
print(a)

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

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: [1 99 3 4]. Базовый срез a[1:3] в NumPy возвращает представление (view): новый объект смотрит в ту же память.

Варианты ответа

  1. [1 2 3 4]
  2. [1 99 3 4]правильный ответ
  3. [99 2 3 4]
  4. Ошибка: срез нельзя изменять

Разбор

Базовый срез a[1:3] в NumPy возвращает представление (view): новый объект смотрит в ту же память. Запись b[0] = 99 меняет a[1]. В обычных списках Python срез копирует, отсюда частое заблуждение, что a не изменится. Индекс 0 у b соответствует индексу 1 у a, поэтому [99 2 3 4] неверно. Изменять срез можно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.