NumPy linspace: создание равномерно расположенных массивов с помощью np.linspace
В этом уроке вы научитесь использовать функцию NumPy linspace для создания массивов равномерно распределенных чисел. Это может быть невероятно полезным, когда вы работаете с числовыми приложениями. Функция NumPy linspace позволяет вам создавать равномерно распределенные диапазоны чисел и настраивать эти массивы с помощью широкого ассортимента параметров.
К концу данного руководства вы узнаете:
Как использовать функцию
np.linspace()
для создания равномерно расположенных массивовКак отличить
np.linspace()
от других подобных функцийКак понять различные параметры функции
np.linspace()
Как создавать массивы двух или более измерений путем передачи списков значений
Оглавление
Понимание функции NumPy linspace()
Прежде чем перейти к практическим примерам, давайте рассмотрим параметры, которые составляют функцию np.linspace()
. Это даст вам хорошее представление о том, чего ожидать в плане её функциональности.
Таблица ниже детализирует параметры функции linspace()
в NumPy, а также их значения по умолчанию и ожидаемые значения
start=
N/A
Integer or array
Начальное значение последовательности
stop=
N/A
Integer or array
Конечное значение последовательности, если для параметра endpoint=
не установлено значение False.
num=
50
Integer
Количество сэмплов, которые нужно сгенерировать. Должно быть неотрицательным.
endpoint=
True
Boolean
Использовать ли остановку в качестве последней выборки
retstep=
False
Boolean
Если True,
возвращает кортеж (выборки, шаг), где шагом является расстояние между выборками.
dtype=
None
dtype
Тип данных выходного массива. Если None
, тип будет выведен и никогда не будет целым числом.
axis=
0
Integer
Актуально только в том случае, если параметры start и stop аналогичны массиву. Результаты на оси результатов для хранения образцов.
В следующем разделе мы рассмотрим использование функции np.linspace()
на практических примерах.
Создание равномерно распределенных диапазонов чисел с помощью NumPy linspace
Функция linspace в NumPy полезна для создания диапазонов равномерно распределенных чисел, без необходимости определять размер шага. Это может быть очень удобно, когда вы хотите иметь определенные начальную и конечную точки, а также заданное количество выборок.
Давайте сначала рассмотрим простой пример, изучим его функционал, а затем на его основе построим дополнение, чтобы исследовать возможности функции.
Из приведенного выше блока кода видно, что когда мы передаем значения start=1
и end=50
, возвращаются значения от 1 до 50. По умолчанию функция np.linspace()
возвращает массив из 50 значений.
Функция возвращает замкнутый диапазон линейного пространства типа данных ndarray
. Говорят, что массив имеет замкнутый диапазон, поскольку он включает конечную точку. Во многих других функциях, таких как функция range()
в Python, конечная точка по умолчанию не включается.
Настройка размера шага в NumPy linspace
Давайте посмотрим, как мы можем использовать параметр num=
, чтобы настроить количество значений, включенных в наше линейное пространство:
Мы видим, что этот массив возвращает 10 значений, варьирующихся от 0 до 50, которые равномерно распределены. Преимущество функции linspace() становится очевидным здесь: нам не нужно определять и понимать размер шага перед созданием нашего массива.
Настройка конечной точки в NumPy linspace
По умолчанию NumPy будет включать указанное значение stop
в функцию. Это поведение отличается от многих других функций Python, включая функцию range()
Python. Если мы хотим изменить это поведение, то мы можем изменить параметр
Давайте посмотрим, как это работает:
Этот код создает массив, содержащий равномерно распределенные значения в интервале от 1 (включительно) до 50 (исключительно), потому что параметр endpoint
установлен на False.
В приведенном выше примере кода мы изменили наш изначальный пример. В предыдущем случае функция возвращала значения с шагом 1
. В данном примере мы изменили поведение так, чтобы исключить конечную точку диапазона значений.
Настройка Типа Данных в NumPy Linspace
По умолчанию NumPy будет выводить тип данных, который требуется. Это происходит, когда параметр dtype=
использует свой аргумент по умолчанию None
. Как мы видели в нашем предыдущем примере, даже когда возвращаемые числа являются равномерно распределенными целыми числами, NumPy никогда не будет выводить тип данных как целое число.
Давайте посмотрим, как мы можем воспроизвести данный пример и явно принудить значения быть типа данных integer (целые числа):
Этот код создает массив целых чисел, содержащий равномерно распределенные значения в интервале от 1 до 50.
В следующем разделе вы узнаете, как извлечь шаг между значениями из функции linspace()
библиотеки NumPy.
Получение размера шага из функции linspace NumPy
Во многих других функциях Python, которые возвращают массив значений, вам нужно определить размер шага. Это делает функцию np.linspace()
отличной, поскольку вам не нужно определять размер шага. Однако, могут быть случаи, когда вам интересно увидеть, каким является размер шага, вы можете изменить параметр
Изменяя параметр retstep=
("возвращать шаг") на True
, функция вернет кортеж, который включает в себя диапазон значений и размер шага.
Давайте посмотрим, как мы можем получить доступ к размеру шага:
Этот код создает массив, содержащий 15 равномерно распределенных значений в интервале от 1 до 10, и также возвращает шаг между этими значениями.
Мы можем извлечь значения и размер шага, непосредственно распаковывая кортеж при объявлении переменных:
Этот код возвращает только шаг между значениями, создаваемыми функцией np.linspace()
, и сохраняет его в переменную step_size
.
В приведенном выше примере мы можем видеть, что мы смогли увидеть размер шага. Преимущество здесь в том, что нам не нужно определять такой сложный размер шага (или даже действительно беспокоиться о том, что это такое).
В следующем разделе вы узнаете, как функция np.linspace()
сравнивается с функцией
NumPy linspace против функций NumPy arange
Хотя функции np.linspace()
и np.arange()
обе возвращают диапазон значений, их поведение сильно отличается:
Функция
np.linspace()
возвращает диапазон равномерно распределенных значений с заданными началом, концом и количеством значений. В данном случае размер шага зависит от других параметров функции.Функция
np.arange()
возвращает ряд равномерно распределенных значений с заданными началом, концом и размером шага. В данном случае количество значений зависит от других параметров функции.
На основе этого анализа можно увидеть, что, хотя функции и очень похожи, у них есть свои конкретные различия. Функция np.linspace()
определяет количество значений, в то время как функция np.arange()
определяет размер шага.
Создание массивов двух или более измерений с помощью NumPy linspace
Мы можем использовать функцию np.linspace()
для создания массивов размерностью более одного измерения. Это может быть полезно, когда нам нужно создать данные, основанные более чем на одном измерении.
Давайте рассмотрим пример, а затем как это работает:
Этот код создает двумерный массив, содержащий 5 равномерно распределенных значений в каждом из двух измерений, от [0, 10] до [10, 100].
Давайте разберем, что мы здесь сделали:
Мы определили начальные точки как
[0,10]
, что означает, что два массива будут начинаться со значения 0 и 10 соответственно.Мы затем определили конечные точки
[10, 100]
, что означает, что массивы будут завершаться на 10 и 100, соответственно.Оба эти массива содержат по пять чисел и должны быть одинаковой длины.
Мы также можем изменить ось результирующих массивов. Это может быть полезно в зависимости от того, как вы хотите сгенерировать свои данные. Давайте рассмотрим:
Этот код создает двумерный массив, содержащий 5 равномерно распределенных значений в каждом из двух измерений, от [0, 10] до [10, 100], при этом ось, по которой распределены значения, задана как ось 1 (столбцы).
В приведенном выше примере, мы транспонировали массив, сопоставив его по первой оси.
Использование linspace NumPy для построения функций
Функция np.linspace()
может быть очень полезной для построения математических функций. Помните, что функция возвращает линейное пространство, что означает, что мы можем легко применять различные функциональные преобразования к данным, используя массивы, сгенерированные функцией.
Давайте посмотрим, как мы можем построить сигмоидную функцию с использованием линейного пространства значений от -100 до 100.
Этот код визуализирует график функции сигмоиды, которая принимает значения от 0 до 1 в зависимости от входных данных x
, которые изменяются от -100 до 100.
Это возвращает следующую визуализацию:
Как вы можете видеть, линии получаются достаточно зубчатыми. Это происходит потому, что по умолчанию NumPy генерирует только пятьдесят значений. Давайте увеличим это число до 200 значений и посмотрим, изменится ли результат:
Этот код увеличивает количество значений в массиве x
до 200, чтобы получить более гладкий график функции сигмоиды.
Это приводит к следующему сглаженному изображению:
Выводы
В этом учебном пособии вы научились использовать функцию NumPy linspace() для создания массивов с равномерно расположенными значениями. Вы узнали, как использовать различные параметры функции и что они делают. Затем вы научились использовать функцию для создания массивов разных размеров. Вы также узнали, как получить доступ к размеру шага каждого значения в возвращаемом массиве. Наконец, вы узнали, как функция сравнивается с похожими функциями и как использовать функцию для построения математических функций.
Дополнительные ресурсы
Чтобы узнать больше о смежных темах, ознакомьтесь с нижеприведенными учебными пособиями:
Numpy нормальное (гауссово) распределение (Numpy Random Normal)
Last updated