Пусть 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).

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

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