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, но оба вызова содержат ошибки — массивы получаются не той формы или не того типа, что требует задача.

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

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

  1. Читала из stdin три целых числа в одной строке: start, stop, n.
  2. Создавала массив seq через np.arange(start, stop, 1) с явным dtype=float — одномерный, значения от start до stop - 1 включительно, тип float64.
  3. Создавала массив grid через np.linspace(start, stop, n) — одномерный, ровно n точек, тип float64.
  4. Выводила в 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
РешениеPython

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

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

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