Генерация равномерно распределенных чисел с использованием NumPy

Beginner

Введение

В этом уроке мы рассмотрим использование функции numpy.linspace() из библиотеки NumPy. Эта функция используется для генерации равномерно распределенных чисел в заданном интервале. Она похожа на функцию numpy.arange(), с единственным отличием в том, что вместо шага размерности количество равномерно распределенных значений в интервале задается с использованием аргумента num.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Разбор синтаксиса

Синтаксис функции numpy.linspace() выглядит следующим образом:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

Функция принимает различные параметры:

  • start: Начальное значение интервала.
  • stop: Конечное значение интервала.
  • num: Количество равномерно распределенных образцов, которое необходимо сгенерировать в интервале. Значение по умолчанию равно 50.
  • endpoint: Булево значение, указывающее, включать или не включать конечную точку интервала. Если значение равно True, то конечная точка включается. Если False, то она исключается. Значение по умолчанию равно True.
  • retstep: Булево значение, указывающее, возвращать или не возвращать значение шага, то есть расстояние между последовательными числами. Значение по умолчанию равно False.
  • dtype: Тип данных элементов массива.

Генерация массива с использованием linspace()

Для генерации массива с использованием numpy.linspace() вам只需 передать начальное значение, конечное значение и количество образцов, которое вы хотите. Вот пример:

import numpy as np

a = np.linspace(0, 10, num=11)
print(a)

Результат выполнения этого кода будет таким:

[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]

Исключение конечной точки

Для исключения конечной точки мы просто устанавливаем параметр endpoint в значение False. Вот пример:

b = np.linspace(0, 10, num=10, endpoint=False)
print(b)

Результат выполнения этого кода будет таким:

[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

Возвращение значения шага

Для возврата значения шага или расстояния между последовательными числами, сгенерированными функцией linspace(), установите параметр retstep в значение True. Вот пример:

c, step = np.linspace(0, 10, num=11, retstep=True)
print(c)
print(step)

Результат выполнения этого кода будет таким:

[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
1.0

Построение графиков с использованием Linspace()

Мы можем использовать linspace() совместно с matplotlib для построения графиков. Вот пример:

import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

plt.plot(x, y)
plt.show()

Результат выполнения этого кода - это простой график синусоидальной волны.

Использование не скалярных значений

Начиная с более новых версий NumPy, linspace() поддерживает нескалярные значения параметров начала и конца. Вот пример:

start = np.array([0, 1, 2])
end = np.array([6, 7, 8])
d = np.linspace(start, end, num=5, axis=1)
print(d)

Результат выполнения этого кода будет таким:

[[0.  1.5 3.  4.5 6. ]
 [1.  2.5 4.  5.5 7. ]
 [2.  3.5 5.  6.5 8. ]]

Резюме

В этом уроке мы продемонстрировали использование функции numpy.linspace() из библиотеки NumPy. Мы рассмотрели синтаксис, различные параметры и примеры. С этими знаниями вы теперь можете быстро и эффективно генерировать массивы с равномерным распределением элементов.