Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
04 Апр 2023
9 мин
7284

Работа с NumPy Python

Пройдите тест, узнайте какой профессии подходите

NumPy — это библиотека с открытым исходным кодом.

NumPy используют, когда нужно строить графики, анализировать статистику или готовить данные для моделей машинного обучения.

Вместо громоздких циклов — лаконичные решения, которые работают быстрее и понятнее. Рассказываем основы работы.

Что такое NumPy и зачем она нужна

NumPy, или Numerical Python, — это библиотека Python, в которой есть:

  • мощный N-мерный массив;
  • высокоуровневые функции;
  • инструменты для интеграции кода C/C++ и Fortran.
    области применения NumPy

А еще — это эффективный многомерный контейнер общих данных. С помощью этой библиотеки можно определять произвольные типы.
Сравнение производительности

Библиотека NumPy — это база данных с исходным кодом в открытом виде. Автор — проект SciPy. Библиотека помогает в разных задачах. Например:

linalg — реализация решений из линейной алгебры.
random — реализация функций для бесперебойной работы со случайными величинами.
fft — реализация прямого и обратного преобразования Фурье.

Научитесь создавать сервисы на языке Python и освойте профессию разработчика за десять месяцев. Пройдите курс Skypro «Python-разработчик» — вас ждут новая работа, диплом установленного образца, портфолио с семью проектами на GitHub и полезные знакомства. Программа обучения соответствует требованиям к вакансиям начинающих Python-разработчиков на 100%.


Инструменты, которыми вы будете владеть после обучения

Где используется

NumPy — это библиотека, с которой начинают почти все, кто работает с анализом данных. Она помогает быстро обрабатывать большие массивы чисел и выполнять сложные математические операции в пару строк кода.

NumPy используют в инженерии, биологии, экономике и так далее. А еще она лежит в основе других библиотек. NumPy как алфавит для работы с данными. Если его знать, проще освоить другие библиотеки, например:

  • Pandas — таблицы как в Excel. Основана на NumPy.
  • TensorFlow — обучает нейросети, а NumPy помогает готовить данные.
  • PyTorch — машинное обучение. Синтаксис похож на NumPy, часто работают вместе.

Обзор NumPy

Есть несколько базовых понятий и функций NumPy, которые обязательно нужно изучить, чтобы свободно пользоваться библиотекой.

Как создавать массивы

Прежде чем переходить к созданию массивов, полезно понять, как они устроены. На картинке ниже показаны три типа массивов: одномерный, двумерный и трёхмерный. Это поможет представить, как данные хранятся в памяти.

  • Одномерный массив — просто последовательность значений, выстроенных в линию.
  • Двумерный — как таблица со строками и столбцами.
  • Трехмерный — уже напоминает куб, состоящий из таких таблиц.
    одномерный, двумерный, трехмерный массив

Вариантов несколько:

    1. Переделать список в NumPy-массивы
      X = np.array([[7, 8, 9], [10, 11, 12]])
      X
      Out:
      array([[7, 8, 9],
      [10, 11, 12]])
    2. Сделать копию.
      Y = X.copy()
      YOut:
      array([[7, 8, 9],
      [10, 11, 12]])
    3. Сделать нулевой или единичный вариант определенного размера.
      Нулевой:
      A = np.zeros((2, 3))
      AOut:
      array([[0., 0., 0.],
      [0., 0., 0.]])

      Единичный:
      B = np.ones((3, 2))
      B

      Out:
      array([[1., 1.],
      [1., 1.],
      [1., 1.]])

    4. Использовать примеры из библиотеки.
      A = np.array([[1, 2, 3], [4, 5, 6]])
      B = np.zeros_like(A)
      B
      Out:
      array([[0, 0, 0],
      [0, 0, 0]])
      A = np.array([[1, 2, 3], [4, 5, 6]])
      B = np.ones_like(A)
      B
      Out:
      array([[1, 1, 1],
      [1, 1, 1]])
      Если нужен двумерный квадратный, то можно сделать его единичной матрицей диагонального типа:
      A = np.eye(3)
      AOut:
      array([[1., 0., 0.],
      [0., 1., 0.],
      [0., 0., 1.]])
      Сделать от From (вкл) до To (не вкл) с шагом Step:
      From = 3.5
      To = 6
      Step = 0.5
      A = np.arange(From, To, Step)
      A
      Out:
      array([3.5, 4. , 4.5, 5. , 5.5])
      Изначально from = 0, step = 1, из-за этого есть вариант с одним параметром, который интерпретируется как To:
      A = np.arange(3)
      A
      Out:
      array([0, 1, 2])

      Либо с двумя — как From и To:
      A = np.arange(20, 26)
      A
      Out:
      array([20, 21, 22, 23, 24, 25])
      В третьем методе размеры передавались одним параметром (кортеж размеров). Вторым (в способах № 3 и № 4) можно указать желаемый тип элементов.
      A = np.zeros((2, 3), 'int')
      A
      Out:
      array([[0, 0, 0],
      [0, 0, 0]])
      B = np.ones((3, 2), 'complex')
      B
      Out:
      array([[1.+0.j, 1.+0.j],
      [1.+0.j, 1.+0.j],
      [1.+0.j, 1.+0.j]])
      Благодаря методу astype массив приводят к другому типу:
      A = np.ones((3, 2))
      B = A.astype('str')
      B
      Out:
      array([['1.0', '1.0'],
      ['1.0', '1.0'],
      ['1.0', '1.0']], dtype='<U32')
      Каждый тип есть в словаре sctypes:
      np.sctypes
      Out:
      {'int': [NumPy.int8, NumPy.int16, NumPy.int32, NumPy.int64],
      'uint': [NumPy.uint8, NumPy.uint16, NumPy.uint32, NumPy.uint64],
      'float': [NumPy.float16, NumPy.float32, NumPy.float64, NumPy.float128],
      'complex': [NumPy.complex64, NumPy.complex128, NumPy.complex256],
      'others': [bool, object, bytes, str, NumPy.void]}

Базовые функции

Есть такой объект:
a = np.array([1,2,3], dtype='int32')

print(a)
[1 2 3]

Для определения количества измерений есть функция ndim:

print(a.ndim)
1

Здесь одномерный массив или вектор. Но для двумерного результат оказался бы другим:

b = np.array([[1, 2, 3], [4, 5, 6]])

print(b.ndim)
2

Для подсчета количества строк и столбцов есть функция shape:

print(a.shape)
(3, )

Объяснение результата: вектор — это одномерный массив. У него в библиотеке NumPy есть только строки или элементы, поэтому функция shape выдала число 3.
С двумерными массивами ситуация понятнее:

print(b.shape)
(2, 3)

В b — две строки и три столбца.
Для остальных массивов функция shape будет добавлять дополнительные цифры в кортеже через запятую:
с = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

print(c.shape)
(2, 2, 3)

Читается это так: в объекте два трехмерных массива с двумя строками и тремя столбцами.

Кроме размерностей, указывают тип элементов через функцию dtype. Если не присваивать тип элементам вручную, по умолчанию будет задан int32. Количество элементов указывают через функцию size.

Функции itemsize и nbytes показывают, что количество байт в памяти занимает один элемент, а еще — какой объем байт во всём массивe NumPy. Один элемент занимает три байта, а весь объект b из девяти элементов — 3 * 9 = 27 байт.

Научиться применять эти и другие функции в разработке можно на курсе Skypro «Python-разработчик». За несколько месяцев изучите базовую теорию и отработаете новые навыки на практических заданиях. Во время всего обучения студентов поддерживают опытные наставники и кураторы. А специалисты центра карьеры помогают составить резюме и подготовиться к собеседованиям.

Доступ к элементам

С NumPy-массивами можно смотреть элементы по отдельности или в сумме. Еще они могут изменить значение внутри самого массива.

✔️ Помните, что заменяется как отдельный элемент, так и любые последовательности элементов. Для этого есть специальная конструкция с полноценной и упрощенной версиями.

Создание специальных массивов

NumPy может создавать массивы с уже забитыми ячейками — нулями или единицами.

  1. Массив NumPy из нулей через функцию zeros
    a = np.zeros((2, 2))
    print(a)
    [[0. 0.]
    [0. 0.]]
    Размер задается кортежем (2, 2). Если указать без скобок, будет ошибка:
    a = np.zeros(2, 2)
    Traceback (most recent call last):
    File "", line 1, in
    TypeError: Cannot interpret '2' as a data type]
    Без скобок NumPy расценивает второй элемент как тип данных, который указывают для параметра dtype.Если указать одно число, получится вектор размером в два элемента. Тогда дополнительные скобки не нужны:

    a = np.zeros(2)
    print(a)
    [0. 0.]

  2. Стандартно элементам присваивается тип float64. Это дробные числа, которые занимают в памяти 64 бита, или 8 байт. Чтобы получить целые числа, укажите это в параметре dtype через запятую:
    a = np.zeros(2, dtype='int32')
    print(a)
    [0 0]
  3. Массив NumPy из единиц через функцию ones:
    b = np.ones((4, 2, 2), dtype='int32')
    print(b)
    [[[1 1]
    [1 1]]
    [[1 1]
    [1 1]]
    [[1 1]
    [1 1]]
    [[1 1]
    [1 1]]]
    Это трехмерный массив numpy из четырех двумерных, в каждом из которых две строки и два столбца.
    кубик
    Элементы — с типом int32.
  4. Массив NumPy из произвольных чисел, отличных от нуля и единицы, через функцию full:
    c = np.full((2, 2), 5)
    print(c)
    [[5 5]
    [5 5]]
    Сначала указали размер массива через кортеж — (2, 2), потом число, которым заполним элементы, — 5.
  5. Массив NumPy случайных чисел через функции random.rand:
    d = np.random.rand(3, 2)
    print(d)
    [[0.76088962 0.14281283]
    [0.32124888 0.34894434]
    [0.66903093 0.72899792]]
    NumPy генерирует случайные числа в диапазоне от нуля до единицы с восемью знаками после запятой. Размер задается не через кортеж (3, 2), а через запятую, потому что в функции random.rand нет параметра dtype.
    Массив случайных чисел через функцию random.randint:
    e = np.random.randint(-5, 10, size=(4, 4))
    print(e)
    [[ 3 1 -4 3]
    [ 0 -2 5 3]
    [ 5 -1 9 2]
    [ 0 -4 9 -2]]
  6. Единичная матрица используется для линейной алгебры. По диагонали такой матрицы элементы равны единице, а остальные — нулю. Ее создают через функцию identity или eye:
    i = np.identity(4)
    print(i)
    [[1. 0. 0. 0.]
    [0. 1. 0. 0.]
    [0. 0. 1. 0.]
    [0. 0. 0. 1.]]

Математические операции

Массивы из NumPy можно использовать по-разному. Главное их преимущество — в поддержании стандартных арифметических операций. Например, в NumPy Python доступны сложение, деление, вычитание. Эта библиотека вычисляет синусы и многое другое из линейной алгебры, математической статистики.

Копирование и организация

Если в NumPy вы присвоите массив другой переменной, то получится ссылка на этот самый массив. Если в какой-то момент работы с программой нужно создать независимую копию, то для этого есть функция copy. А чтобы изменить объем и размер массива — функция reshape.

Дополнительные возможности

Можно использовать функцию накладывания или наслоения одних массивов поверх других: vstack и hstack.

Библиотека numpy может прочесть файлы с жесткого диска или данные из файла. Булевы выражения — возможность пользователям библиотеки получать информацию о том, какие элементы отвечают определенным условиям.

Как установить NumPy

Можно использовать платформу Anaconda: там большой выбор разных библиотек, которые подойдут для работы Python.
distribution

  1. Перейдите на официальный сайт и скачайте последнюю версию софтов.
  2. Откройте установщик и установите программы по инструкции.
  3. Когда Python установится, откройте консоль и введите команду python3 для запуска интерпретатора Python.

В Anaconda есть много полезного — NumPy, SciPy, Pandas, потому дополнительных установок не требуется. Достаточно проверить, что нужная библиотека работает. Для этого введите команды: import NumPy as np, потом a = np.array ([1,2,3]). Выведите значение переменной a, чтобы убедиться, что всё работает: print (a).

Можно установить библиотеки numpy без лишних файлов через интегрированного питоновского менеджера пакетов PIP.
python

Для этого нужно:

  • установить Python;
  • открыть программу и перейти во вкладку Downloads;
  • выбрать место установки и согласиться с пунктами;
  • потом скачать библиотеку NumPy.

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

Как подключить NumPy

NumPy подключается в проект после установки через стандартный менеджер пакетов. Обычно ее импортируют с коротким именем, чтобы упростить работу с функциями библиотеки numpy.

После этого становится доступна работа с массивами, математическими операциями, матрицами и другими числовыми структурами. Это базовый инструмент для анализа данных, научных расчетов и подготовки данных для моделей машинного обучения.

Эту библиотеку часто используют в технике и исследованиях — у нее простой интерфейс и всё работает быстро. Настроить можно за пару минут, а возможностей у нее — как у серьезных профессиональных инструментов.
инструкция

Главное о библиотеке NumPy

  • NumPy — это библиотека для Python, которая помогает удобно работать с числами и данными.
  • Чаще всего встречается в работе с анализом данных, машинном обучении и научных проектах.
  • Упрощает работу с массивами. Вместо громоздких циклов — простые и быстрые решения.
  • Поддерживает базовые математические действия и работу со случайными числами.
  • Устанавливается за пару минут — через Anaconda или PIP.
  • Подходит для новичков, но при этом используется и в серьезных проектах.
  • Хорошая база для изучения других библиотек — Pandas, TensorFlow и PyTorch.

Добавить комментарий