Выбор ответа Middle NumPy: массивы и векторизация обновлено

np.where с тремя аргументами

Вопрос

Что вернёт np.where(a > 0, a, 0) для a = np.array([-2, 3, -1, 5])?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: [0 3 0 5]. С тремя аргументами np.where(cond, x, y) берёт x там, где условие истинно, и y в остальных местах, сохраняя форму: [0 3 0 5].

Варианты ответа

  1. (array([1, 3]),)
  2. [0 3 0 5]правильный ответ
  3. [-2 0 -1 0]
  4. [3 5]

Разбор

С тремя аргументами np.where(cond, x, y) берёт x там, где условие истинно, и y в остальных местах, сохраняя форму: [0 3 0 5]. Кортеж индексов (array([1, 3]),) возвращает np.where с одним аргументом. [3 5] это булева маска a[a > 0], она укорачивает массив. [-2 0 -1 0] перепутаны ветки.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.