Пропустить до содержимого

Как использовать numpy arange?

[

Как использовать np.arange() в NumPy

NumPy - это фундаментальная библиотека Python для численных вычислений. Ее наиболее важным типом является тип массива, называемый ndarray. NumPy предлагает множество функций для создания массивов для различных ситуаций. Одной из таких функций является arange(), основанная на числовых диапазонах. Часто она называется np.arange(), потому что np - широко используемое сокращение для NumPy.

Создание массивов NumPy важно при работе с другими библиотеками Python, которые на них полагаются, такими как SciPy, Pandas, Matplotlib, scikit-learn и другими. NumPy подходит для создания и работы с массивами, потому что предлагает полезные функции, увеличивает производительность и позволяет писать лаконичный код.

В конце этой статьи вы узнаете:

  • Что такое np.arange()
  • Как использовать np.arange()
  • Как np.arange() сравнивается с встроенным в Python классом range
  • Какие другие функции подобны np.arange()

Давайте посмотрим на np.arange() в действии!

Возвращаемое значение и параметры np.arange()

numpy.arange() - это одна из функций создания массивов на основе числовых диапазонов. Она создает экземпляр ndarray с равномерно распределенными значениями и возвращает ссылку на него.

Вы можете определить интервал значений, пробел между ними и их тип с помощью четырех параметров arange():

numpy.arange([start, ]stop, [step, ], dtype=None) -> numpy.ndarray

Первые три параметра определяют диапазон значений, а четвертый - тип элементов:

  1. start - это число (целое или десятичное), которое определяет первое значение в массиве.
  2. stop - число, которое определяет конец массива и не включается в массив.
  3. step - число, которое определяет шаг (разницу) между каждыми двумя последовательными значениями в массиве и по умолчанию равно 1.
  4. dtype - тип элементов выходного массива и используется по умолчанию, если не указан.

step не может быть нулем. В противном случае возникнет ZeroDivisionError. Если шаг равен нулю, не получится перемещаться от значения start.

Если dtype опущен, arange() вернет массив с элементами типа float64.

Давайте рассмотрим примеры использования np.arange() для более подробного понимания.

Аргументы числового диапазона в np.arange()

np.arange() позволяет задавать разные аргументы числового диапазона для создания массива.

Предоставление всех аргументов числового диапазона

Если вы хотите задать все аргументы числового диапазона: начальное значение (start), конечное значение (stop) и шаг (step), вы можете сделать это следующим образом:

import numpy as np
arr = np.arange(start=1, stop=10, step=2)
print(arr) # [1 3 5 7 9]

В этом примере мы создали массив, начиная с 1, до конечного значения 10 (не включительно), с шагом 2. Получившийся массив содержит значения [1, 3, 5, 7, 9].

Предоставление двух аргументов числового диапазона

Если вам нужно указать только начальное значение (start) и конечное значение (stop), а шаг (step) не указывать, то по умолчанию он будет равен 1:

import numpy as np
arr = np.arange(start=1, stop=10)
print(arr) # [1 2 3 4 5 6 7 8 9]

В этом примере мы создали массив, начиная с 1 и заканчивая 9 (не включительно), с шагом по умолчанию - 1. Получившийся массив содержит значения [1, 2, 3, 4, 5, 6, 7, 8, 9].

Предоставление одного аргумента числового диапазона

Если вам нужно указать только конечное значение (stop), а начальное значение (start) и шаг (step) не указывать, то по умолчанию начальное значение будет равно 0, а шаг - 1:

import numpy as np
arr = np.arange(stop=5)
print(arr) # [0 1 2 3 4]

В этом примере мы создали массив, начиная с 0 и заканчивая 5 (не включительно), с шагом по умолчанию - 1. Получившийся массив содержит значения [0, 1, 2, 3, 4].

Предоставление отрицательных аргументов числового диапазона

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

import numpy as np
arr = np.arange(start=10, stop=0, step=-1)
print(arr) # [10 9 8 7 6 5 4 3 2 1]

В этом примере мы создали массив, начиная с 10 и заканчивая 0 (не включительно), с отрицательным шагом -1. Получившийся массив содержит значения [10, 9, 8, 7, 6, 5, 4, 3, 2, 1].

Подсчет в обратном порядке

Если вам нужно создать массив, идущий в обратном порядке от высокого значения к низкому, вы можете использовать отрицательный шаг:

import numpy as np
arr = np.arange(start=10, stop=1, step=-1)
print(arr) # [10 9 8 7 6 5 4 3 2]

В этом примере мы создали массив, начиная с 10 и заканчивая 1 (не включительно), с отрицательным шагом -1. Получившийся массив содержит значения [10, 9, 8, 7, 6, 5, 4, 3, 2].

Получение пустых массивов

Если начальное значение (start) больше или равно конечному значению (stop), то функция np.arange() вернет пустой массив:

import numpy as np
arr = np.arange(start=5, stop=3)
print(arr) # []

В этом примере мы пытались создать массив, начиная с 5 и заканчивая 3 (не включительно), но так как начальное значение больше или равно конечному значению, функция вернула пустой массив.

Типы данных np.arange()

По умолчанию, тип элементов возвращаемого массива np.arange() будет целочисленным. Однако, в зависимости от ваших нужд, вы можете изменить тип элементов, указав параметр dtype:

import numpy as np
arr = np.arange(start=1, stop=10, step=2, dtype=np.float64)
print(arr) # [1. 3. 5. 7. 9.]

В этом примере мы создали массив с типом элементов float64, начиная с 1 и заканчивая 10 (не включительно), с шагом 2. Получившийся массив содержит значения [1.0, 3.0, 5.0, 7.0, 9.0].

Превышение простых диапазонов с np.arange()

np.arange() позволяет создавать более сложные числовые диапазоны при помощи математических выражений. Например, вы можете использовать арифметические операции и функции NumPy для создания массивов с нужными значениями:

import numpy as np
# Создание диапазона с шагом в 2 раза больше предыдущего значения
arr = np.arange(start=1, stop=10, step=2 ** np.arange(5))
print(arr) # [ 1 2 4 8 16]
# Создание массива с электрическими нагрузками по году для каждого дня за 10 лет
days = np.arange(start=1, stop=365 * 10 + 1)
load = 100 * (1 + np.sin(2 * np.pi * (days - 80) / 360))

В первом примере мы создали массив, начиная с 1 и заканчивая 10 (не включительно), с шагом, который увеличивается в 2 раза от предыдущего значения [1, 2, 4, 8, 16].

Во втором примере мы использовали функцию np.sin() из NumPy для создания массива, представляющего электрическую нагрузку для каждого дня за 10 лет. Мы использовали арифметические операции и математические функции для создания сложного числового диапазона.

Сравнение range и np.arange()

При работе с числовыми диапазонами в Python, у вас есть выбор между встроенным классом range и функцией np.arange(). Вот несколько аспектов сравнения этих двух подходов:

Параметры и вывод

Класс range принимает три аргумента: start, stop и step. Он возвращает объект класса range, который представляет целочисленные значения в заданном диапазоне.

Функция np.arange() принимает те же три аргумента, а также четвертый аргумент dtype, который определяет тип данных элементов возвращаемого массива. Она возвращает массив типа ndarray, содержащий значения заданного диапазона.

Создание последовательностей

range и np.arange() могут быть использованы для создания последовательностей в Python. Однако, np.arange() шире используется для создания массивов с числовыми значениями, в то время как range в основном используется для итераций в циклах for.

Циклы for в Python

Класс range является основой для работы циклов for в Python. Вы можете использовать объект класса range в конструкции цикла for для выполнения итераций в заданном диапазоне.

Функция np.arange() возвращает массив типа ndarray, который может быть использован в циклах for, но его основное предназначение - создание массивов с числовыми данными.

Другие функции на основе числовых диапазонов

Кроме np.arange(), NumPy предлагает и другие функции на основе числовых диапазонов. Некоторые из них:

  • np.linspace(): создает равномерно распределенные значения в заданном диапазоне
  • np.logspace(): создает значения, равномерно распределенные в логарифмической шкале
  • np.geomspace(): создает значения, равномерно распределенные в геометрической шкале

Если вам нужно создать массив со значениями, которые не могут быть получены с помощью np.arange(), обратитесь к документации NumPy для ознакомления с другими функциями создания массивов на основе числовых диапазонов.

Быстрое резюме

В этой статье вы узнали, как использовать np.arange() для создания массивов на основе числовых диапазонов в NumPy. Вы изучили различные аргументы числового диапазона и типы данных, а также сравнили range и np.arange().

Вам предоставлено множество примеров кода, чтобы вы могли легко применить эти знания в своих проектах. Теперь вы готовы использовать np.arange() для создания массивов с нужными числовыми значениями.

Заключение

NumPy предоставляет мощные инструменты для работы с массивами на основе числовых диапазонов. Используя функцию np.arange(), вы можете создавать массивы сразу с нужными числовыми значениями. Это делает ваш код более читабельным и эффективным.

Не ограничивайтесь только np.arange() - изучите и другие функции создания массивов на основе числовых диапазонов в NumPy, чтобы воспользоваться всеми возможностями этой мощной библиотеки.