Выбор ответа 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 2 3 4][1 99 3 4]правильный ответ[99 2 3 4]- Ошибка: срез нельзя изменять
Разбор
Базовый срез a[1:3] в NumPy возвращает представление (view): новый объект смотрит в ту же память. Запись b[0] = 99 меняет a[1]. В обычных списках Python срез копирует, отсюда частое заблуждение, что a не изменится. Индекс 0 у b соответствует индексу 1 у a, поэтому [99 2 3 4] неверно. Изменять срез можно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «NumPy: массивы и векторизация»
- Что значит axis=0
- Broadcasting: форма результата
- Обрезка выбросов по перцентилям
- Скользящее среднее через cumsum
- Попарные расстояния через broadcasting
- Стандартизация столбцов матрицы (z-score)
- Запись float в целочисленный массив
- Fancy indexing возвращает копию