Что выведет код Middle NumPy: массивы и векторизация обновлено
Срез, копия и сумма
Вопрос
Что выведет код? По строке на каждый print.
import numpy as np
a = np.arange(6)
b = a[::2]
c = a[[1, 3]]
b += 10
c += 100
print(a.tolist())
print(b.tolist(), c.tolist())
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: [10, 1, 12, 3, 14, 5], [10, 12, 14] [101, 103]. a[::2] базовый срез с шагом, это view, поэтому b += 10 меняет элементы 0, 2, 4 в a. a[[1, 3]] fancy indexing, это копия: c += 100 меняет только c.
Что выведет
[10, 1, 12, 3, 14, 5]
[10, 12, 14] [101, 103]
Разбор
a[::2] базовый срез с шагом, это view, поэтому b += 10 меняет элементы 0, 2, 4 в a. a[[1, 3]] fancy indexing, это копия: c += 100 меняет только c. Отсюда a с изменёнными чётными позициями и нетронутыми 1 и 3.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «NumPy: массивы и векторизация»
- Что значит axis=0
- Broadcasting: форма результата
- Обрезка выбросов по перцентилям
- Скользящее среднее через cumsum
- Попарные расстояния через broadcasting
- Стандартизация столбцов матрицы (z-score)
- Запись float в целочисленный массив
- Fancy indexing возвращает копию