Автор оригинала: Pankaj Kumar.
Быть генератором последовательности, numpy.linspace ()
Функция используется для генерации последовательности чисел в линейном пространстве с равномерным размером шага.
Numpy вообще может генерировать последовательности, используя numpy.arange ()
Но когда мы используем аргументы с плавающей точкой, он может привести к потере точности, что может вызвать непредсказуемый выход.
Чтобы избежать потенциальной потери точности из-за точной точки с плавающей точкой, Numpy предоставляет нам отдельную последовательность генератора в numpy.linspace ()
, который является предпочтительным вариантом, если вы уже знаете количество необходимых элементов. Но вы обычно получаете тот же выход, используя оба Linspace ()
и Arange ()
При соответствующих параметрах, поэтому оба могут быть выбраны для одной и той же задачи.
Например, следующие кодовые участки 2 линейных последовательностей от 0 до 10 с использованием numpy.linspace ()
Чтобы показать, что при создании последовательности существует однородность.
import numpy as np import matplotlib.pyplot as plt y = np.zeros(5) x1 = np.linspace(0, 10, 5) x2 = np.linspace(0, 10, 5) plt.plot(x1, y, 'o') plt.plot(x2, y + 0.5, 'o') plt.ylim([-0.5, 1]) plt.show()
Выход :
Синтаксис
Формат: array.linspace (начать, конец,)
будет генерировать единую последовательность между Начать
и конец
, с num_points
общих элементов.
Здесь,
Начать
-> Начальная точка (включена) диапазонаконец
-> Конечная точка (включая) диапазонаNum
-> Общее количество точек в последовательности
Давайте понять это, используя пару примеров:
import numpy as np a = np.linspace(0.02, 2, 10) print('Linear Sequence from 0.02 to 2:', a) print('Length:', len(a))
Выход
Linear Sequence from 0.02 to 2: [0.02 0.24 0.46 0.68 0.9 1.12 1.34 1.56 1.78 2. ] Length: 10
Вышеуказанный фрагмент генерирует равномерную последовательность от 0,02 до 2, имея 10 элементов в нем.
Аргумент ключевого слова конечной точки
Если вы не хотите включить последнюю точку в расчетах последовательности, есть другой аргумент ключевых слов конечная точка
, который можно установить на Ложь
Отказ (Это верно
по умолчанию)
import numpy as np a = np.linspace(0.02, 2, 10, endpoint=False) print('Linear Sequence from 0.02 to 2:', a) print('Length:', len(a))
Выход
Linear Sequence from 0.02 to 2: [0.02 0.218 0.416 0.614 0.812 1.01 1.208 1.406 1.604 1.802] Length: 10
Как вы можете наблюдать, последний точку (2) не был включен в последовательность, поэтому размер шага также отличается, который теперь будет генерировать совершенно другую последовательность.
Аргумент ключевого слова RetStep
Это булевой необязательный аргумент, если указан, также возвращает размер шага наряду с массивом последовательности, что приведет к кортежу в качестве вывода.
import numpy as np a = np.linspace(0.02, 2, 10, retstep=True) print('Linear Sequence from 0.02 to 2:', a) print('Length:', len(a))
Выход
Linear Sequence from 0.02 to 2: (array([0.02, 0.24, 0.46, 0.68, 0.9 , 1.12, 1.34, 1.56, 1.78, 2. ]), 0.22) Length: 2
Поскольку вывод – кортеж, это длина 2, а не 10!
Аргумент ключевого слова оси
Это устанавливает ось в результате для хранения образцов. Он используется только в том случае, если начало и конечные точки имеют таблицы массива.
По умолчанию ( Axis = 0
), образцы будут вдоль новой оси, вставленной в начале. Мы можем использовать Axis = -1
получить ось в конце.
import numpy as np p = np.array([[1, 2], [3, 4]]) q = np.array([[5, 6], [7, 8]]) r = np.linspace(p, q, 3, axis=0) print(r) s = np.linspace(p, q, 3, axis=1) print(s)
Выход
array([[[1., 2.], [3., 4.]], [[3., 4.], [5., 6.]], [[5., 6.], [7., 8.]]]) array([[[1., 2.], [3., 4.], [5., 6.]], [[3., 4.], [5., 6.], [7., 8.]]])
В первом случае, поскольку Ось
Мы принимаем ограничения последовательностей с первой оси.
Здесь пределы являются пары подлокотника [1, 2] и [5,6]
, а также [3, 4] и [7,8]
, принимая элементы с первой оси P
и Q
Отказ Теперь сравниваем соответствующие элементы из полученной пары для создания последовательностей.
Так что последовательности являются [[1-5], [2-6]]
Для первого ряда и [[3-7], [4-8]]
, для второй пары (строка), которая оценивается и объединена для формирования [[[1, 2], [3, 4]], [[3, 4], [5, 6]], [[5, 6], [7,8]]]
,
Второй случай вставит новые элементы в ось = 1
или колонны. Таким образом, новая ось будет создана через последовательности столбцов. вместо строки последовательностей.
Последовательности [1, 2] на [5, 7]
и [3, 4] на [7, 8]
рассматриваются и вставлены в столбцы результата, что привело к [[[1, 2], [3, 4], [5, 6]], [[3, 4], [5, 6], [7, 8]]]
Отказ