Вопросы по теме «NumPy: основы»

Проверь себя · 1/3разбор после ответа
Пусть x = np.array([[1, 2], [3, 4]]). Чему равен результат np.sum(x, axis=0)?

NumPy — фундамент для числовых вычислений в Python и основа pandas, scipy, sklearn. На собеседовании спрашивают про ndarray, broadcasting, векторизацию, индексирование массивов и разницу в производительности с чистым Python. Понимание NumPy показывает, что аналитик готов работать с данными эффективно.

Всего в этом разделе 20 вопросов. Каждый — с правильным ответом и кратким разбором теории. Разбито на 4 части по 5 вопросов.

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыPandas и DataFrameСинтаксис и типы данных

Вопросы 15 из 20

1Какое значение вернёт `arr.shape`, если `arr = np.array([[1, 2, 3], [4, 5, 6]])`?
A`(6,)`: одномерный массив из шести элементов после уплощения двумерного
B`(2, 3)`: две строки и три столбца у двумерного массива из вложенных списков
C`(3, 2)`: три строки и два столбца, как при транспонировании исходного массива
D`(2,)`: одномерный кортеж из числа строк во внешнем списке
Ответ: Атрибут `.shape` показывает размер массива по каждой оси: для двумерного это (строки, столбцы).

Запись `np.array([[...], [...]])` создаёт двумерный массив, где внешний список — строки, а внутренние списки — элементы внутри строки. Здесь 2 строки по 3 элемента, поэтому `arr.shape` равен `(2, 3)`. Понимание формы массива нужно для индексации, срезов и согласования размеров при поэлементных операциях.

Подробный разбор →
2Пусть `arr = np.array([[1, 2], [3, 4]])`. Что вернёт `np.sum(arr)` без указания оси (`axis`)?
AСкалярное значение `10`
BМассив `np.array([4, 6])`
CМассив `np.array([3, 7])`
DМассив `np.array([1, 2, 3, 4])`
Ответ: `np.sum` без `axis` сворачивает массив по всем осям и возвращает один общий итог как скаляр.

При вызове `np.sum(arr)` без `axis` NumPy перемножает ничего и просто складывает все элементы между собой: `1 + 2 + 3 + 4 = 10`. С `axis=0` сумма берётся по столбцам и даёт `np.array([4, 6])`, а с `axis=1` — по строкам, итог `np.array([3, 7])`. `np.array([1, 2, 3, 4])` — это плоское представление исходных значений, его дал бы `arr.ravel()`, а не агрегация.

Подробный разбор →
3Пусть `arr = np.array([10, 20, 30, 40])`. Чему равен срез `arr[1:3]`?
A`np.array([10, 20])`
B`np.array([20, 30])`
C`np.array([20, 30, 40])`
DСкаляр 20
Ответ: Срез `arr[i:j]` берёт элементы с индекса `i` включительно до `j` не включительно.

В NumPy (как и в Python) верхняя граница среза не включается. Поэтому `arr[1:3]` берёт элементы с индексами 1 и 2: это 20 и 30. Понимание срезов важно для подготовки подвыборок и оконных признаков.

Подробный разбор →
4Какой вызов создаст массив `numpy` из нулей формы (7, 3) после `import numpy as np`?
A`np.zeros((7, 3))`: форма передаётся одним кортежем, на выходе двумерный массив 7×3
B`np.zeros(7, 3)`: два позиционных аргумента вместо кортежа формы массива
C`np.zeros(7*3)`: одномерный массив длины 21 без разбивки на строки и столбцы
D`np.array([0] * 21)`: одномерный массив из 21 нуля без формы (7, 3)
Ответ: Для двумерного массива форму передают как кортеж: `np.zeros((rows, cols))`.

`np.zeros((7, 3))` создаёт двумерный массив нулей с 7 строками и 3 столбцами — форма передаётся одним кортежем. Частая ошибка новичка — передать два аргумента вместо кортежа (`np.zeros(7, 3)`) или создать одномерный массив длины 21 (`np.zeros(7*3)`). Создание массива через `np.array([0] * 21)` тоже даёт одномерный список, а не нужную форму (7, 3).

Подробный разбор →
5Что вернёт `arr.shape`, если `arr = np.arange(6).reshape(2, 3)`?
A(6,)
B(3, 2)
C(2, 3)
D(2, 6)
Ответ: `.reshape(r, c)` меняет форму массива на (r, c), если число элементов совпадает.

`np.arange(6)` создаёт одномерный массив из 6 элементов. Вызов `.reshape(2, 3)` переупаковывает эти 6 элементов в 2 строки и 3 столбца, поэтому `arr.shape` будет (2, 3). Это базовый навык работы с формой массива в `numpy`. Вариант (3, 2) — это форма массива той же длины, но с другими размерами осей; вариант (2, 6) предполагает 12 элементов, что не соответствует исходной длине.

Подробный разбор →
1234

Хотите тренировать интерактивно?

В приложении — таймер, прогресс, стрики и 1700+ вопросов по всем темам.

Тренировать Python в Telegram

Другие темы: Python

Коллекции и структуры данныхГенераторы списков и встроенные функцииЦиклы и условияИсключения и отладкаРабота с файлами: JSON и CSVФункции и аргументыИтераторы и генераторыPandas и DataFrameСинтаксис и типы данных