numpy.ma.arange#

ma.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.

Возвращает:
arangeMaskedArray

Массив равномерно распределённых значений.

Для аргументов с плавающей точкой длина результата равна 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])