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 — массивы получаются не того типа, что требует задача.
Что нужно сделать
Найдите и исправьте все три ошибки так, чтобы программа:
- Читала из
stdinодну строку с тремя целыми числами:rows,cols,val. - Создавала массив
filledчерезnp.full((rows, cols), val)с явнымdtype=float— тип должен бытьfloat64. - Создавала массив
zeroedчерезnp.zeros((rows, cols))с явнымdtype=int— тип должен быть целочисленным. - Создавала массив
onedчерезnp.ones(rows * cols)с явнымdtype=bool— тип должен бытьbool. - Выводила в
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
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- NumPy arange и linspace: разница шага и количества точек
- dtype NumPy: целые и вещественные массивы, типы элементов
- NumPy shape, ndim, size и dtype: атрибуты массива и задача
- Срезы двумерного массива NumPy: строки, столбцы и шаг
- NumPy reshape и transpose: разница на примере и задача
- NumPy newaxis и squeeze: вектор-строка и вектор-столбец
