numpy.arange
- numpy.arange([start, ]stop, [step, ]dtype=None, *, device=None, like=None)
-
Возвращает равномерно распределенные значения в заданном интервале.
arangeможно вызвать с различным количеством позиционных аргументов:-
arange(stop): Значения генерируются в полуоткрытом интервале[0, stop)(другими словами, интервал включаетstartно не включаетstop). -
arange(start, stop): Значения генерируются в полуоткрытом интервале[start, stop). -
arange(start, stop, step)Значения генерируются в полуоткрытом интервале[start, stop), с интервалом между значениями, заданнымstep.
Для целочисленных аргументов функция примерно эквивалентна встроенной функции Python
range, но возвращает массив ndarray, а не объектrange.При использовании нецелочисленного шага, например, 0,1, часто лучше использовать
numpy.linspace.См. разделы "Предупреждение" ниже для получения дополнительной информации.
- Parameters:
-
- startцелое или вещественное число, необязательно
-
Начало интервала. Интервал включает это значение. Значение по умолчанию для начала — 0.
- stopцелое или вещественное число
-
Конец интервала. Интервал не включает это значение, за исключением некоторых случаев, когда
stepне является целым числом и погрешность с плавающей точкой влияет на длинуout. - stepцелое или вещественное число, необязательно
-
Интервал между значениями. Для любого выходного
out, это расстояние между двумя смежными значениями,out[i+1] - out[i]. Значение шага по умолчанию — 1. Еслиstepзадано в качестве позиционного аргумента, также необходимо указатьstart. - dtypedtype, необязательно
-
Тип выходного массива. Если
dtypeне задан, тип данных выводится из других входных аргументов. - deviceстрока, необязательно
-
Устройство, на котором следует разместить созданный массив. Значение по умолчанию: None. Только для совместимости с API массивов, поэтому должен быть
"cpu"если передан.В версии 2.0.0.
- likearray_like, необязательно
-
Объект-ссылка для создания массивов, которые не являются массивами NumPy. Если в качестве
likeпередан массив-подобный объект, поддерживающий протокол__array_function__, результат будет определяться им. В этом случае гарантируется создание объекта массива, совместимого с переданным через этот аргумент.В версии 1.20.0.
- Returns:
-
- arangendarray
-
Массив равномерно распределенных значений.
Для аргументов с плавающей точкой длина результата —
ceil((stop - start)/step). Из-за переполнения с плавающей точкой это правило может привести к тому, что последнее значение массиваoutбудет большеstop.
Предупреждение
Длина выходных данных может быть числово неустойчивой.
Другая проблема устойчивости связана с внутренней реализацией
numpy.arange. Фактическое значение шага, используемого для заполнения массива, —dtype(start + step) - dtype(start), а неstep. Здесь может произойти потеря точности из-за приведения типов или из-за использования чисел с плавающей точкой, когдаstartнамного больше, чемstep. Это может привести к неожиданному поведению. Например:>>> 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-мерном пространстве.
- Как создать массивы с равномерно распределенными значениями
Примеры
>>> 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])
-
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.arange.html