NumPy zeros, ones и full: dtype — пример и задача

np.zeros создаёт массив нулей, np.ones — единиц, а np.full заполняет массив заданным значением. У zeros и ones тип по умолчанию — float64; у full без явно заданного dtype тип выводится из значения заполнения.

Сравните np.full(3, 2) и np.full(3, 2, dtype=float): значения похожи, но типы элементов различаются. Поэтому одинаковая форма массива ещё не означает одинаковый результат для проверки типов.

В задаче ниже найдите ошибки в создании массивов. Проверяются и shape, и dtype; исправленную программу можно проверить прямо в браузере.

Найди и исправь: dtype-ловушки в np.full, np.zeros и np.ones

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

В редакторе уже есть сломанный код: он создаёт три массива через np.full, np.zeros и np.ones, но в каждом вызове допущена ошибка с dtype — массивы получаются не того типа, что требует задача.

Что нужно сделать

Найдите и исправьте все три ошибки так, чтобы программа:

  1. Читала из stdin одну строку с тремя целыми числами: rows, cols, val.
  2. Создавала массив filled через np.full((rows, cols), val) с явным dtype=float — тип должен быть float64.
  3. Создавала массив zeroed через np.zeros((rows, cols)) с явным dtype=int — тип должен быть целочисленным.
  4. Создавала массив oned через np.ones(rows * cols) с явным dtype=bool — тип должен быть bool.
  5. Выводила в stdout три строки — по одной на каждый массив — в формате:
filled: shape=<shape> dtype=<dtype>
zeroed: shape=<shape> dtype=<dtype>
oned: shape=<shape> dtype=<dtype>

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

Одна строка: три целых числа через пробел: rows cols val.

Гарантируется: rows >= 1, cols >= 1, val >= 1.

Формат вывода

Три строки вида <имя>: shape=<shape> dtype=<dtype>. Порядок: filled, zeroed, oned.

Формат shape — строго как у Python: (r, c) для двумерных, (n,) для одномерных.

Пример

Ввод
2 3 7
Вывод
filled: shape=(2, 3) dtype=float64
zeroed: shape=(2, 3) dtype=int64
oned: shape=(6,) dtype=bool
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи