Глава 1: Машинное обучение

2. Нампи:

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

2.1. Синтаксис

!pip install numpy
import numpy as np

# this is the syntax :
  # np.functions() 

2.2. Функции:

  • shape : возвращает форму массива.
  • array(Object): этот метод возвращает массив или любую (вложенную) последовательность.
A = np.array([1,2,3])
A.shape
# Here A will have the shape (3,)
# The syntax is np.array(Object)
  • zeros(shape): из заданной формы возвращается массив, заполненный нулями.
np.zeros((3,2)) # returns an array of dimension (3,2) full of zeros
  • ones(shape): из заданной формы возвращается массив, заполненный единицами.
  • random.randn(shape): из заданной формы возвращается массив, заполненный случайными числами.
  • linspace(Start,End,Quantity): возвращает массив с равномерно расположенными числами за указанный интервал [начало; конец]
np.linespace(1,10,10)# array[1,2....,9,10]
  • arange(Start,End,Step): возвращает массив с равномерно распределенными значениями по количеству шагов, заданных в указанном интервале [Start;End].
np.arrange(0,10,2) # array([0,2,4,...,10])

2.3. Размеры, форма, размер:

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

Чтобы проиллюстрировать эти различия, вот три кратких примера:

Примечание.Для массивов с измерениями больше 1 вы можете получить доступ к форме определенного измерения, сославшись на измерение, которое хотите изучить.

Vector.shape # (5,)
Matrix.shape[0] # 3
Matrix.shape[1] # 4

Типы данных в NumPy (dtypes):

В NumPy есть несколько типов данных, каждый из которых может быть представлен в битах. Среди этих типов:

поплавок16, поплавок64… и т. д.

int16, int64,… и т.д.

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

2.3. Манипуляции с массивами

2.3.1. Стеки

В NumPy существует три основных типа стеков, используемых для объединения массивов.

  • Горизонтальный стек (hstack): массивы укладываются горизонтально (вдоль столбцов). Он объединяет массивы вдоль их второй оси, создавая новый массив с увеличенными столбцами.
A = np.zeros((3,3))
B = np.ones((3,3))
C = np.hstack(A,B) # Dim(C) = (3,6)

Примечание. Количество строк должно быть одинаковым. (форма [0])

  • Вертикальный стек (vstack): массивы складывают вертикально (вдоль строк). Он объединяет массивы вдоль их первой оси, создавая новый массив с увеличенными строками.
A = np.zeros((3,2))
B = np.ones((4,2))
C = np.bstack(A,B) # Dim(C) = (7,2)

  • dstack : складывает массивы по третьей оси. Он создает новый массив с увеличенной глубиной, объединяя массивы по третьей оси.

Примечание. лучшей альтернативой группированию является функция конкатенация.

np.concatenate((A,B),axis=1 ) # for Columns
np.concatenate((A,B),axis=0 ) # for rows

2.3.2. Изменение формы

Изменение формы массива в соответствии с требованиями имеет решающее значение в машинном обучении.

  • reshape(shape): Функция reshape в NumPy используется для изменения формы массива без изменения его данных. Это позволяет вам реорганизовать элементы массива, чтобы они соответствовали другому размеру или размерности, сохраняя при этом исходные данные, просто обратите внимание, что он меняет расположение исходных данных.
  • сжатия() : функция numpy.squeeze используется для удаления одномерных записей из формы массива. Он сворачивает любое измерение размером 1, эффективно уменьшая размерность массива. Эта функция особенно полезна при работе с массивами с ненужными одноэлементными размерами, что позволяет более компактно представлять данные.
  • Функция numpy.ravel используется для сведения многомерного массива в одномерный массив, также известный как непрерывный сглаженный массив. Он возвращает сглаженное представление исходного массива без создания копии, а это означает, что любые модификации сглаженного массива также повлияют на исходный массив.

2.3.3. Линейная алгебра

  • Транспонирование матрицы:
A = np.array(....) # Suppose this is a matrix
A.T # to transpose it.
  • Матричный продукт:
A.dot(B)
  • Определитель матрицы:
np.linalg.det(A)
  • Обратная матрица:
np.linalg.inv(A)
np.linalg.pinv(A)
  • Собственные значения:
np.linalg.eig(A)

Другие полезные функции:

  • unique(arr A, return_counts=bool): цель этой функции — вернуть все уникальные объекты из массива A и другого массива, содержащего количество вхождений (как мы установили return_counts=True).
A=np.random.randint(0,10,(5,5))
values,counts = np.unique(A,return_counts=True)
values[counts.argsort()] # returns the unique values 
                         # from the array A sorted based 
                         # on the frequency of their occurrences.
  • argsort(arr): функция argsort() в NumPy используется для возврата индексов, которые сортируют массив в порядке возрастания. Вместо сортировки исходного массива он предоставляет индексы элементов на основе их порядка сортировки. Эта функция полезна для получения отсортированного порядка элементов без изменения исходного расположения массива.
arr = np.array([3, 1, 2, 5, 4])
sorted_indexes = np.argsort(arr) # Output: [1 2 0 4 3]
  • иснан().