Пусть arr = np.array([[10, 20, 30], [40, 50, 60]]). Что вернёт выражение arr[:, 1]?

Anp.array([20, 50]): второй столбец, выбранный для всех строк через срез [:, 1]
Bnp.array([10, 40]): первый столбец с индексом 0, а не запрошенный второй
Cnp.array([30, 60]): третий столбец с индексом 2, а не запрошенный индекс 1
Dnp.array([[20], [50]]): форма 2x1 вместо одномерного результата arr[:, 1]
Правильный ответ. Срез arr[:, j] выбирает весь столбец j из 2D массива и возвращает 1D массив.

Разбор

В записи arr[:, 1] двоеточие означает «все строки», а индекс 1 — второй столбец. Поэтому возвращается столбец [20, 50] как одномерный массив. Если хотелось получить первый столбец, нужно было бы написать arr[:, 0], а для третьего — arr[:, 2]. Срез по столбцу из 2D массива даёт 1D, а не 2D с формой (n, 1).

Проверь себя · 1/3разбор после ответа
После import numpy as np вы сравниваете операции над списком Python list и массивом np.ndarray. Что верно для lst * 2 и arr * 2, где lst = [1, 2, 3], а arr = np.array([1, 2, 3])?
Тренировать Python в Telegram

Ещё вопросы по теме «NumPy: основы»