Выбор ответа Middle NumPy: массивы и векторизация обновлено
Fancy indexing возвращает копию
Вопрос
Изменится ли a после b = a[[0, 2]]; b[0] = 100?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет: индексация списком индексов создаёт копию. Индексирование массивом или списком индексов (fancy indexing) и булевой маской всегда создаёт копию, в отличие от базовых срезов.
Варианты ответа
- Да:
a[0]станет 100, потому чтоbэто view - Да, но только если массив
aодномерный - Нет: индексация списком индексов создаёт копиюправильный ответ
- Нет, потому что
b[0] = 100вызовет ошибку
Разбор
Индексирование массивом или списком индексов (fancy indexing) и булевой маской всегда создаёт копию, в отличие от базовых срезов. Поэтому a не меняется при любой размерности. Ошибки нет: копию можно менять. А вот a[[0, 2]] = 100 (присваивание прямо в индексацию) изменит a, это отдельная операция __setitem__.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.