NumPy arange и linspace: разница шага и количества точек
np.arange задаёт последовательность через шаг, а np.linspace — через количество точек. У arange правая граница не включается; linspace по умолчанию включает обе границы.
Шаг или число элементов
np.arange(2, 10, 2) создаёт значения 2, 4, 6, 8. np.linspace(2, 10, 5) создаёт пять равномерно расположенных точек, включая 10. Третий аргумент у этих функций означает разное.
При дробном шаге arange зависит от точности вещественных вычислений: когда требуется заранее известное число точек, удобнее linspace. Параметр endpoint=False исключает правую границу у linspace; dtype управляет типом значений.
Пример на других данных
import numpy as np
print(np.arange(2, 10, 2).tolist())
print(np.linspace(2, 10, 5).tolist())
print(np.linspace(0, 1, 4, endpoint=False).tolist())
Результат:
[2, 4, 6, 8]
[2.0, 4.0, 6.0, 8.0, 10.0]
[0.0, 0.25, 0.5, 0.75]
Попробуйте сами
Ниже — отдельное упражнение: напишите код и запустите проверку. Другие упражнения по этой теме. Для обучения по порядку откройте бесплатный курс NumPy и pandas.
Найди и исправь: неверные аргументы arange и linspace
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
В редакторе есть сломанный код: он пытается создать два массива через np.arange и np.linspace, но оба вызова содержат ошибки — массивы получаются не той формы или не того типа, что требует задача.
Что нужно сделать
Найдите и исправьте обе ошибки в коде так, чтобы программа:
- Читала из
stdinтри целых числа в одной строке:start,stop,n. - Создавала массив
seqчерезnp.arange(start, stop, 1)с явнымdtype=float— одномерный, значения отstartдоstop - 1включительно, типfloat64. - Создавала массив
gridчерезnp.linspace(start, stop, n)— одномерный, ровноnточек, типfloat64. - Выводила в
stdoutровно две строки:
seq: size=<size> dtype=<dtype> first=<first_element>grid: size=<size> dtype=<dtype> last=<last_element>
Где <first_element> — первый элемент seq, <last_element> — последний элемент grid, оба выводятся как float через str() (т.е. стандартный Python-вывод числа с плавающей точкой).
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
Одна строка: три целых числа через пробел: start stop n.
Гарантируется: stop > start, n >= 2.
Формат вывода
Две строки:
seq: size=<size> dtype=<dtype> first=<first_element>
grid: size=<size> dtype=<dtype> last=<last_element>
Пример
- Ввод
0 5 6
- Вывод
seq: size=5 dtype=float64 first=0.0 grid: size=6 dtype=float64 last=5.0
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- NumPy zeros, ones и full: dtype — пример и задача
- dtype NumPy: целые и вещественные массивы, типы элементов
- NumPy shape, ndim, size и dtype: атрибуты массива и задача
- Срезы двумерного массива NumPy: строки, столбцы и шаг
- NumPy reshape и transpose: разница на примере и задача
- NumPy newaxis и squeeze: вектор-строка и вектор-столбец
