Рубрики
Без рубрики

Как использовать np.linspace () в Python? Полезное иллюстрированное руководство

https://youtu.be/vpzwzfd-any В этой статье я объясню функцию np.linspace, как ее использовать и когда вы должны. У него есть немного репутации для того, чтобы быть сложной, но, как вы увидите, это действительно не так! Итак, давайте сначала получим быстрый обзор. Синтаксис: numpy.linspace (запуск, остановка ,,,,,,,) artizeddefaultdescriptionStart – начальное значение … Как использовать np.linspace () в python? Полезное иллюстрированное руководство Подробнее »

Автор оригинала: Adam Murphy.

В этой статье я объясню np.linspace Функция, как его использовать и когда вы должны. У него есть немного репутации для того, чтобы быть сложной, но, как вы увидите, это действительно не так! Итак, давайте сначала получим быстрый обзор.

Синтаксис: numpy.linspace (запуск, остановка ,,,,,,,,)

Начало Начальное значение последовательности.
останавливаться Конечное значение последовательности.
50 опускать Количество образцов для генерации. Должен быть неотрицательным (вы не можете генерировать ряд образцов меньше нуля!).
Правда конечная точка Если true, конечная точка включена в образец, если нет ложь.
Ложь ретвер Чтобы вернуть значение шага в расчете. Шаг – это расстояние между каждым значением. Если правда, возвращает (образцы, шаг) в качестве кортежа.
Никто Dtype DTYPE всех элементов в выходном массиве (Numpy массивы только содержат элементы одного типа). Если все значения будут строки, аналогичные, если все значения будут целыми числами.
0 ось Если запуск или остановка – это массив, вы можете установить ось, на которую вы будете хранить образцы.

Возвращаемое значение: По умолчанию функция возвращает Numpy Array равномерно распределенных образцов между Начать и Стоп Отказ Но если вы установите ретвер это также вернет шаг значение.

образцы Обмойте массив образцов в интервале [Пуск, Стоп].
шаг Численное значение, дающее пространство между двумя образцами (только если).

Давайте посмотрим на три наиболее распространенные аргументы более подробно сначала: Начать , Стоп и Num Отказ Вот что Официальные Numpy Docs должен сказать:

numpy.linspace(start, stop, num=50)

Возвращение равномерно расположено на указанном интервале. Возвращает Num равномерно распределенные образцы. Конечная точка интервала может быть необязательно исключена.

Примечание Как называет имя, np.linspace Возвращает номера, которые являются линейно разнесенные отдельно. Таким образом, они все находятся на расстоянии друг от друга (подумайте о пунктах на линии).

Из определения следует, что np.linspace (-3, 3) даст нам 50 номеров равномерно разнесенным в интервале [-3, 3] Отказ Давайте проверим это с некоторым кодом.

Попробуйте сами : Вы можете запустить код в оболочке, нажав «Run»!

Упражнение : Можете ли вы уменьшить количество образцов до 10?

>>> A = np.linspace(-3, 3)

>>> type(A)
numpy.ndarray

# Number of elements in A
>>> len(A)
50

# First element of A
>>> A[0]
-3.0

# Last element of A
>>> A[-1]
3.0

# The difference between every value is the same: 0.12244898
>>> np.diff(A)
array([0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898, 0.12244898,
       0.12244898, 0.12244898, 0.12244898, 0.12244898])

Если мы хотим только 10 образцов от -3 до 3, мы устанавливаем Num = 10 Отказ

>>> B = np.linspace(-3, 3, num=10)

# B only contains 10 elements now
>>> len(B)
10

np.linspace пример

Давайте определим простой функцию:

def f(x):
    return x*(x-2)*(x+2)

Если вы помните свою среднюю школу, вы будете знать, что это положительный кубический, который пересекает ось X при 0, 2 и -2. Таким образом, область интереса находится на оси X от (-3, 3).

Теперь мы построим это, используя то же самое np.linspace () Как указано выше (переименовано к большей читабельности).

x_values = np.linspace(-3, 3)

plt.plot(x_values, f(x_values))

# Add labels
plt.title('Line Plot of f(x) Using np.linspace')
plt.xlabel('x')
plt.ylabel('f(x)')

plt.show()

Примечание : Потому что np.linspace Возвращает Numpy Array, мы можем применить целые функции для них элемент-мудрым. Это делает их супер легко работать с.

Примечание 2 : Я покинул код, добавляя заголовки и метки оси, отнесенные, чтобы сохранить место.

Чтобы увидеть, что происходит на более глубоком уровне, давайте сделаем разброс сюжета одинаковых данных.

plt.scatter(x_values, f(x_values))
plt.show()

Теперь давайте посмотрим, что произойдет, если вы не используете NP.LINSPACE ().

np.linspace vs np.arange.

Возможно, вы столкнулись с аналогичной функцией для np.linspace , а именно NP.Arge Отказ Как следует из названия, он возвращает Диапазон значений между заданными значениями запуска и остановки.

Посмотрим, что произойдет, если мы заменим np.linspace с NP.Arge В нашем коде выше:

x_values = np.arange(-3, 3)

plt.plot(x_values, f(x_values))
plt.show()

Что произошло? Давайте нарисуем график разброса и посмотрите, что происходит более подробно.

Глядя на это и что NP.Arge () Возвращает, мы видим проблему.

>>> np.arange(-3, 3)
array([-3, -2, -1,  0,  1,  2]) 

Мы получаем только шесть ценностей X, разнесенное одно целое число, и мы даже не получаем 3 включенного в конце! Поскольку нам нужно большое количество X-значений для нашего линейного заговора, чтобы выглядеть гладко, это недостаточно хорошее.

Разве мы не можем решить это, установив шаг к чему-то, кроме 1, скажем до 0,1? Мы можем, но Numpy Docs явно рекомендую против этого Как это приводит к несоответствиям между результатами. Причины этого находятся за пределами объема этой статьи. Лучше всего использовать np.linspace И ваша старшая я поблагодарит вас, если вы строите хорошие привычки сейчас.

np.linspace 2d.

Вы можете построить функцию более одной переменной, таких как

def g(x, y):
    return (x - y)**3 * (3*x**2 + y)

В этом случае вам не просто нужен np.linspace Но и NP.Meshgrid Отказ Краткое объяснение: Если ваша функция n размерная, NP.Meshgrid взял на себя np.linspace функционирует как вход.

Все аргументы объяснили

Вот все возможные аргументы и их по умолчанию для np.linspace :

np.linspace(start, stop, num=50, endpoint=True, restep=False, dtype=0, axis=0)

Начать, остановить – подобный массив

Начальное и конечное значение последовательности соответственно. Вы можете пройти списки или массивы, чтобы получить много линейных пространств внутри одного массива. Эти могут быть доступны через обычное нарезание Numpy.

# Linear spaces [1-4], [2-4] and [3-4] in one array
>>> np.linspace([1, 2, 3], 4, num=5)
array([[1.  , 2.  , 3.  ],
       [1.75, 2.5 , 3.25],
       [2.5 , 3.  , 3.5 ],
       [3.25, 3.5 , 3.75],
       [4.  , 4.  , 4.  ]])

# Linear spaces [1-4], [2-5] and [3-6] in one array
>>> np.linspace([1, 2, 3], [4, 5, 6], num=5)
array([[1.  , 2.  , 3.  ],
       [1.75, 2.75, 3.75],
       [2.5 , 3.5 , 4.5 ],
       [3.25, 4.25, 5.25],
       [4.  , 5.  , 6.  ]])

Num – int, по умолчанию 50

Количество образцов для генерации. Должен быть неотрицательным (вы не можете генерировать ряд образцов меньше нуля!).

Конечная точка – Bool, по умолчанию истина

Если Правда Конечная точка включена в образец, если Ложь Это не так.

RetStep – Bool, по умолчанию false

Ли вернуть шаг ценность в расчете. Шаг – это расстояние между каждым значением. Если Правда , np.linspace Возвращает (образцы, шаг) как кортеж.

>>> sample, step = np.linspace(1, 2, num=5, retstep=True)

>>> sample
array([1.  , 1.25, 1.5 , 1.75, 2.  ])

>>> step
0.25

dtype – dtype, по умолчанию нет

Dtype Из всех элементов в выходном массиве (запоминание Numpy Armers содержит только элементы одного типа!).

Если dtype = str все значения будут строки, аналогичные, если dtype = int все значения будут целыми числами.

Быть честным, я не могу думать о многих случаях, когда вы захотите использовать эту функциональность. Обычно вы будете использовать np.linspace для создания массива поплавков между двумя числами. Если вы хотите создать массив INTS, NP.Arge намного лучше. Во-первых, его настройка по умолчанию – вернуть массив INTS. Во-вторых, он действует как встроенный Python Диапазон () Функция вы уже знаете и любите! Но если вы придумаете некоторые случаи этого, пожалуйста, дайте мне знать в комментариях!

Ось – int, по умолчанию 0

Если Начать или Стоп Является ли массив, который мы можем установить осью, которую мы будем хранить образцы.

# Store the 50 samples on the rows (default behaviour)
>>> np.linspace([1, 2, 3], 4, axis=0).shape 
(50, 3)


# Store the 50 samples along the columns
>>> np.linspace([1, 2, 3], 4, axis=1).shape 
(3, 50)

И это все для np.linspace Функция! Теперь вы знаете почти все, что нужно знать! Это было не так уж в конце концов, это было?

Если у вас есть какие-либо вопросы, пожалуйста, поместите их в комментарии, и я вернусь к вам, как только смогу!

Подобные функции

Если вам понравилось и интересно, если Numpy имеет разные, но подобные функции, то ответ – это да! Ниже приведены некоторые, чтобы проверить:

  • np.geomspace – цифры равномерно разнесены на шкале журнала (геометрические прогрессии)
  • np.logspace – похож на Geomspace, но конечные точки указаны в качестве логарифмов

Атрибуция

Эта статья способна предоставлена пользователем Finxter Адам Мерфи (данные ученый):

Я являюсь самоучками программистом с первой степенью класса в математике из Университета Дарема и кодировал с июня 2019 года.

Я хорошо разбираюсь в основах SUB STRACKING и DATA SCAIL и может получить широкий спектр информации из Web очень быстро.

Недавно я счел информацию обо всех часах, которые Breitling и Rolex продают всего за 48 часов и уверены в себе, я могу доставить наборы данных подобного качества для вас, независимо от ваших потребностей.

Будучи собственным английским языком, мои навыки общения отлично, и я доступен, чтобы ответить на любые вопросы, которые вы имеете, и предоставим регулярные обновления о прогрессе моей работы.

Если вы хотите нанять Адама, проверьте его Профиль намного !

Куда пойти отсюда?

Тщательное понимание Numpy Basics является важной частью образования каких-либо данных ученых. Numpy находится в основе многих передовых машин обучения и научных библиотек данных, таких как Pandas, Tensorflow и Scikit-Suart.

Если вы боретесь с Numpy Library – не бойся нет! Станьте Numpy Professional в кратчайшие сроки с нашим новым учебником кодирования «Coffe Break Numpy». Это не только тщательное введение в Numpy Library, которая повысит вашу ценность на рынке. Также весело пройти большую коллекцию кода головоломки в книге.

Получить ваш перерыв на кофе Numpy!

Рекомендации:

[1] https://docs.cscipy.org/doc/numpy/reference/generated/numpy.linspace.html [2] https://docs.cscipy.org/doc/numpy/reference/generated/numpy.meshgrid.html [3] https://docs.cscipy.org/doc/numpy/reference/generated/numpy.arange.html.

Expert Writer & Content Creator – наука о науке и машине.

Я помогаю образовательным компаниям создавать привлечение в блоге и видеоконтентах преподавания данных науки для начинающих. В отличие от моих конкурентов, я узнаю новые концепции каждый день и так понимаю, что это нравится быть студентом.
Мои статьи легко понять, эффективны и приятно читать. Мои видео достойны, участвуют и подробно.

Работать со мной, пожалуйста, обратитесь к Upwork
https://tinyurl.com/hire-adam-murphy.