numpy.arange#
- numpy.arange([начало, ]стоп, [шаг, ]dtype=None, *, device=None, like=None)#
Возвращает равномерно распределенные значения в заданном интервале.
arangeможет быть вызвана с переменным количеством позиционных аргументов:arange(stop): Значения генерируются в полуоткрытом интервале[0, stop)(другими словами, интервал, включающий начало но исключая стоп).arange(start, stop): Значения генерируются в полуоткрытом интервале[start, stop).arange(start, stop, step)Значения генерируются в полуоткрытом интервале[start, stop), с интервалом между значениями, заданнымstep.
Для целочисленных аргументов функция примерно эквивалентна встроенной в Python
range, но возвращает ndarray вместоrangeэкземпляр.При использовании нецелочисленного шага, такого как 0.1, часто лучше использовать
numpy.linspace.См. разделы с предупреждениями ниже для получения дополнительной информации.
- Параметры:
- началоцелое или вещественное, необязательно
Начало интервала. Интервал включает это значение. Начальное значение по умолчанию — 0.
- стопцелое или вещественное
Конец интервала. Интервал не включает это значение, за исключением некоторых случаев, когда шаг не является целым числом, и округление с плавающей запятой влияет на длину выход.
- шагцелое или вещественное, необязательно
Расстояние между значениями. Для любого вывода выход, это расстояние между двумя соседними значениями,
out[i+1] - out[i]. Размер шага по умолчанию равен 1. Если шаг указан как позиционный аргумент, начало также должен быть указан.- dtypedtype, опционально
Тип выходного массива. Если
dtypeне указан, вывести тип данных из других входных аргументов.- devicestr, optional
Устройство, на котором будет размещён созданный массив. По умолчанию:
None. Только для совместимости с Array-API, поэтому должно быть"cpu"если передано.Новое в версии 2.0.0.
- какarray_like, необязательный
Объект-ссылка, позволяющий создавать массивы, которые не являются массивами NumPy. Если массивоподобный объект, переданный как
likeподдерживает__array_function__протокол, результат будет определен им. В этом случае он гарантирует создание объекта массива, совместимого с переданным через этот аргумент.Новое в версии 1.20.0.
- Возвращает:
- arangendarray
Массив равномерно распределённых значений.
Для аргументов с плавающей точкой длина результата равна
ceil((stop - start)/step). Из-за переполнения чисел с плавающей точкой это правило может привести к тому, что последний элемент выход больше чем стоп.
Предупреждение
Длина вывода может быть численно нестабильной.
Другая проблема стабильности связана с внутренней реализацией
numpy.arange. Фактическое значение шага, используемое для заполнения массива, —dtype(start + step) - dtype(start)и не шаг. Потеря точности может произойти здесь из-за приведения типов или использования чисел с плавающей точкой, когда начало намного больше, чем шаг. Это может привести к неожиданному поведению. Например:>>> np.arange(0, 5, 0.5, dtype=int) array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) >>> np.arange(-3, 3, 0.5, dtype=int) array([-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
В таких случаях использование
numpy.linspaceследует предпочесть.Встроенный
rangeгенерирует Встроенные целые числа Python, которые имеют произвольный размер, в то время какnumpy.arangeпроизводитnumpy.int32илиnumpy.int64числа. Это может привести к неправильным результатам для больших целочисленных значений:>>> power = 40 >>> modulo = 10000 >>> x1 = [(n ** power) % modulo for n in range(8)] >>> x2 = [(n ** power) % modulo for n in np.arange(8)] >>> print(x1) [0, 1, 7776, 8801, 6176, 625, 6576, 4001] # correct >>> print(x2) [0, 1, 7776, 7185, 0, 5969, 4816, 3361] # incorrect
Смотрите также
numpy.linspaceРавномерно распределённые числа с аккуратной обработкой конечных точек.
numpy.ogridМассивы равномерно распределённых чисел в N-измерениях.
numpy.mgridСеточные массивы равномерно распределённых чисел в N-мерном пространстве.
- Как создавать массивы с регулярно расположенными значениями
Примеры
>>> import numpy as np >>> np.arange(3) array([0, 1, 2]) >>> np.arange(3.0) array([ 0., 1., 2.]) >>> np.arange(3,7) array([3, 4, 5, 6]) >>> np.arange(3,7,2) array([3, 5])