Программирование

Введение в Numpy в Python

Что такое NumPy?

NumPy означает числовой python, модуль Python, который позволяет вам вычислять и манипулировать многомерными и одномерными элементами массива. Он поставляется с высокопроизводительным объектом многомерного массива, а также утилитами для работы с ними.

В 2005 году Трэвис Олифант создал пакет NumPy, объединив функции родового модуля Numeric с характеристиками другого модуля Numarray. NumPy реализует многомерные массивы и матрицы, а также другие сложные структуры данных. Эти структуры данных помогают вычислять массивы и матрицы наиболее эффективным способом. NumPy позволяет выполнять математические и логические операции с массивами. Многие другие известные пакеты Python, такие как pandas и matplotlib, совместимы с Numpy и используют его.

Нужно использовать NumPy в Python?

NumPy — ценный и эффективный инструмент для работы с большими объемами данных. NumPy работает быстро; таким образом, легко работать с огромным объемом данных. Библиотеки анализа данных, такие как NumPy, SciPy, Pandas и другие, стали популярными благодаря революции в науке о данных. Python — самый простой язык с точки зрения синтаксиса, и он является приоритетным для многих специалистов по данным; поэтому NumPy становится популярнее день ото дня.
Многие математические процедуры, обычно используемые в научных вычислениях, выполняются с помощью Numpy быстро и просто, в том числе:

  • Умножение вектора или матрицы на вектор или матрицу.
  • Операции с векторами и матрицами на уровне элементов (т. е. сложение, вычитание, умножение и деление на число)
  • Применение функций к вектору/матрице поэлементно (например, мощность, логарифм и экспонента).
  • NumPy имеет встроенные функции для линейной алгебры и генерации случайных чисел.
  • NumPy также упрощает умножение матриц и преобразование данных.
  • Многомерные массивы эффективно реализуются с помощью NumPy.
  • Массивы NumPy в Python предоставляют возможности для интеграции C, C++ и других языков. Помимо прочего, это также полезно в линейной алгебре и генерации случайных чисел. Массивы NumPy также можно использовать для хранения общих данных в многомерном контейнере.
  • Это быстрее, чем стандартные массивы Python, которые не имеют предварительно скомпилированного кода C NumPy (предварительно скомпилированный код — это файл заголовка, который компилируется в промежуточную форму, которая быстрее обрабатывается компилятором).

Установка NumPy

Перейдите в командную строку и запустите «pip install numpy», чтобы установить Python NumPy. После завершения установки просто перейдите в свою IDE (например, VS Code, Jupyter Notebook, PyCharm) и введите «import numpy as np», чтобы импортировать его; теперь вы готовы использовать NumPy.

Что такое массив NumPy?

Объект массива Numpy — это сильный объект N-мерного массива со строками и столбцами. Массивы NumPy могут быть созданы из вложенных списков Python, и к их элементам можно получить доступ. Он относится к группе элементов одного типа, доступ к которым можно получить с помощью индексации с отсчетом от нуля. Каждый элемент в ndarray имеет тот же размер, что и блок памяти. Каждая запись в ndarray представляет собой объект типа данных (называемый dtype).

Типы массива Numpy:

  • Одномерный массив NumPy
    Одномерный массив имеет только одно измерение элементов. Другими словами, одномерный массив NumPy должен содержать только одно значение кортежа.
    Пример:
# One-Dimensional Array
import numpy as np
val=np.array([1, 5, 2, 6])
print(val)

Реализация:-

Объяснение: функция print() используется для печати всего предоставленного массива.

  • Многомерный массив NumPy
    Многомерный массив может иметь n измерений элементов. Другими словами, многомерный массив NumPy может содержать несколько значений кортежа.
    Пример:
# Multi-Dimensional Array
import numpy as np
val=np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val)

Реализация:

Объяснение: функция print() используется для печати всего предоставленного массива.

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

Индексирование или доступ к индексу массива в массиве NumPy можно выполнить различными способами.
1. Нарезка используется для печати диапазона массива. Встроенная функция среза используется для создания объекта среза Python путем передачи ему параметров запуска, остановки и шага. Нарезка массива включает в себя установление диапазона в новом массиве, используемом для печати подмножества элементов исходного массива. Поскольку нарезанный массив содержит подмножество элементов исходного массива, редактирование содержимого изменяет содержимое исходного массива.
Пример 1:

# Accessing Array Element
import numpy as np
val=np.array([1, 5, 2, 6])
# Zero based indexing
print(val[1])
val_mul=np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val_mul[1][1])

Реализация:

Объяснение. Здесь мы получаем доступ к 1-му значению индекса одномерного массива, записывая val[1] и обращаясь к значению во 2-й строке и 2-м столбце двумерного массива, поскольку массивы имеют индексация с отсчетом от нуля.

Пример 2:

#Accessing Range of Elements 
#in array using slicing
val_mul=np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
slice_val = val_mul[:2, :2]
print (“First 2 rows and columns of the array\n”, slice_val)
Implementation:

Реализация:

Объяснение: Здесь мы пытаемся получить доступ к значениям в строках и столбцах, начиная с 1-й строки до 2-й строки, записывая «:2» в качестве первого аргумента и аналогичным образом получая доступ ко всем значениям, соответствующим этим строкам и имея столбцы от начального до 2-го.

Пример 3:

val_mul1=np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6),(1, 5, 0, 1),(7, 3, 3, 0)])
slice_step_row = val_mul1[::2, :2]
print (“All rows and 2 columns of the array with step size of 2 along the row\n”, slice_step_row)

Реализация:

Объяснение: здесь мы пытаемся получить доступ к значениям в строках и столбцах, начиная с 1-й строки и заканчивая последней строкой, с размером шага 2, что означает, что разница между последовательными строками равна 2, написав «::2 ” в качестве первого аргумента и аналогичным образом получить доступ ко всем значениям, соответствующим этим строкам и имеющим столбцы от начала до 2-го.

Пример 4:

# Accessing multiple elements at one go
val_mul1=np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6),(1, 5, 0, 1),(7, 3, 3, 0)])
mul_idx_arr = val_mul1[
 [1, 2, 2, 3], 
 [1, 2, 3, 3]
 ]
print (“\nAccessing Elements at multiple indices (1, 1),(2, 2), (2, 3), (3, 3) →”, mul_idx_arr)

Реализация:

Объяснение: Здесь мы пытаемся получить доступ к значениям из массива, которые присутствуют в индексах (1,1), (2,2), (2,3) и (3,3) .

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

Пример:

# Boolean array indexing
val_mul=np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6),(1, 5, 0, 1),(7, 3, 3, 0)])
condition = val_mul > 3 
res = val_mul[condition]
print (res)

Реализация:

Объяснение: здесь мы получаем доступ к значениям, которые соответствуют заданным условиям, т. е. значение элемента должно быть больше 3.

Часто используемые операции с массивом Numpy

  • ndim. Эта операция используется для вычисления размерности массива.

Пример:

# Dimension of the array
val1 = np.array([1, 5, 2, 6])
print(val1.ndim)
# 2-D array
val2 = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val2.ndim)

Реализация:

Объяснение. Здесь val1 — это одномерный массив со значениями 1, 5, 2 и 6, поэтому мы получаем значение 1 для val1.ndim, а val2 — это двумерный массив
3 4 2 5
3 6 2 4
1 5 2 6
Следовательно, мы получаем значение 2, соответствующее val2.ndim

  • Размер — эта операция используется для вычисления количества элементов в массиве.

Пример:

# Calculate Array Size 
val2 = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val2.size)

Реализация:

Объяснение. Здесь val2 содержит 12 значений 3, 4, 2, 5, 3, 6, 2, 4, 1, 5, 2, 6, поэтому размер массива val2 равен 12.

  • Форма — эта операция используется для вычисления формы массива.

Пример:

# Calculate Array Shape 
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val.shape)

Реализация:

Объяснение. Здесь массив Val представляет собой двумерный массив
3 4 2 5
3 6 2 4
1 5 2 6
Он состоит из 3 строк. и 4 столбца, а val.shape используется для получения размера, соответствующего каждому измерению.

  • Изменить форму — изменение формы используется для изменения формы массива в соответствии с заданными параметрами.

Пример:

# Reshape the Array
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val)
val=val.reshape(2,6)
print(val)

Реализация:

Объяснение: функция reshape помогает нам изменить форму массива и соответствующим образом заполнить значения массива. Здесь у нас есть 12 значений, и мы хотим изменить массив с (3,4) на (2,6), чтобы теперь было только 2 строки и 6 столбцов.

  • Транспонировать — оператор T используется для транспонирования массива.
    Пример:
# Transpose of an array
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val.T)

Реализация:

Объяснение. Когда нам нужно заменить все строки массива на столбцы, а столбцы на строки, нам нужно вызвать val.T, чтобы получить транспонирование массива. При транспонировании форма массива изменяется, так как теперь количество строк становится количеством столбцов и наоборот. Так как здесь 3, 4, 2, 5 изначально были первой строкой, но после транспонирования она становится 1-й колонкой.

  • Ravel — ravel используется для преобразования массива в один столбец
    Пример:
# Convert Array to Single Column
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val.ravel())

Реализация:

Объяснение. Когда мы хотим преобразовать массив в одномерный массив, мы используем функцию ravel, поскольку она объединяет все значения массива, как в приведенном выше примере, у нас изначально был двумерный массив 3 строки и 4 столбца, но после применения функции ravel мы получаем одномерный массив из 12 значений.

  • Размер элемента: размер элемента используется для вычисления размера каждого элемента в байтах.
    Пример:
# Calculate Array Itemsize
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
# size of each element in bytes
print(val.itemsize)

Реализация:

Объяснение: когда мы хотим получить размер каждого элемента в байтах, мы используем (array_name.itemsize), так как в приведенном выше примере тип данных — int32, что означает целое число из 32 бит, и поскольку мы знаем, что 1 байт равен 8 битам и, следовательно, имеет размер 4 байта.

  • Dtype. Dtype используется для получения типа данных элементов в массиве.
    Пример:
# Calculate Data type of each element
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val.dtype)

Реализация:

Объяснение: когда мы хотим вычислить тип данных элементов, присутствующих в массиве, мы используем val.dtype, который дает нам тип данных, здесь в приведенном выше примере значения массива являются целыми, поэтому данные данный тип - int32, что означает, что он представляет целое число из 32 бит.

  • np.zeros()/np.ones() — функции one() и zeros() numpy используются для создания массивов, содержащих все 1 и 0 соответственно.
    Пример:
# Generating array having all 1's
val = np.ones(3)
print(val)
 
# Generating array having all 0's
val0 = np.zeros(3)
print(val0)

Реализация:

Объяснение. Когда мы хотим сгенерировать массив, содержащий все 1 или 0, мы используем приведенные выше функции, которые помогли нам сгенерировать массив размера n. Здесь мы указали размер массива как 3, поэтому генерируется массив размера 3, содержащий все 1 и 0.

- linspace — функция linspace используется для создания массива, содержащего элементы, равномерно распределенные в заданном диапазоне. Для начала и конца диапазона требуется 3 параметра, а также количество элементов, которые должны присутствовать в массиве.

Пример:

# Linspce generate 8 numbers present in range 2–5
val = np.linspace(2,5,8)
print(val)

Реализация:

Объяснение: когда мы хотим сгенерировать массив с определенным порядком, например, в диапазоне от x до y, и размером массива, равным n, мы используем функцию linspace, поскольку здесь мы хотели сгенерировать массив размера 8, имеющий значения, равномерно распределенные между диапазоном от 2 до 5.

  • Max — Max используется для получения максимального элемента во всем массиве.

Пример:

# Find maximum element in whole array
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val.max())

Реализация:

Объяснение: когда мы хотим вычислить максимум всех элементов массива, мы можем просто написать array_name.max() и получить максимальный элемент, так как здесь мы получаем 6, что является максимальным из всех элементов.

  • Min — функция Min используется для получения минимального элемента во всем массиве.

Пример:

# Find minimum element in whole array
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val.min())

Реализация:

Объяснение: когда мы хотим вычислить минимум всех элементов массива, мы можем просто написать array_name.min() и получить минимальный элемент, так как здесь мы получаем 1, который является минимумом всех элементов.

  • Sum — функция Sum используется для получения суммы всех элементов массива.

Пример:

# Sum of all elements in whole array
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val.sum())

Реализация:

Объяснение: когда мы хотим вычислить сумму всех элементов массива, мы можем просто написать array_name.sum().

  • np.sqrt() — эта функция используется для получения квадратного корня из всех элементов массива.

    Пример:
# Used to calculate square root of each element
val=np.array([1, 4, 9])
print(np.sqrt(val))

Реализация:

Объяснение: когда мы хотим вычислить квадратный корень каждого значения массива, мы можем просто написать np.sqrt(array_name) и получить соответствующие квадратные корни для каждого значения, например. 2 соответствует 4 и 3 соответствует 9.

  • np.std(): эта функция используется для вычисления стандартного отклонения всех элементов массива.

Пример:

# Used to calculate standard deviation of all elements
val=np.array([1, 4, 9])
print(np.std(val))

Реализация:

Объяснение. Когда мы хотим найти стандартное отклонение всех значений массива, нам не нужно выполнять лихорадочные математические вычисления для вычисления стандартного отклонения, мы можем просто написать (np.std(array_name )).

  • Операция суммирования в массиве — Когда нам нужно добавить некоторое конкретное число n ко всем элементам массива или один массив к другому массиву.

Пример 1:

# Add number 3 to all elements of array val
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val+3)

Реализация:

Объяснение: когда мы хотим добавить значение n из каждого значения массива, мы можем просто написать (имя_массива+n).

Пример 2:

# Add array val to another array val1
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
val1 = np.array([(4, 4, 8, 2),(9, 0, 3, 5),(6, 8, 3, 3)])
print(val+val1)

Реализация:

Объяснение: когда мы хотим найти сложение двух массивов, мы можем просто написать (массив1+массив2), чтобы получить сложение массивов, но имейте в виду, что размеры обоих массивов должны быть одинаковыми. .

  • Операция вычитания массива — Когда нам нужно вычесть некоторое конкретное число n из всех элементов массива или одного массива из другого массива.

Пример 1:

# Subtract number 3 from all elements of array val
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val-3)

Реализация:

Объяснение: когда мы хотим вычесть значение n из каждого значения массива, мы можем просто написать (имя_массива-n).

Пример 2:

# Subtract array val from another array val1
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
val1 = np.array([(4, 4, 8, 2),(9, 0, 3, 5),(6, 8, 3, 3)])
print(val1-val)

Реализация:

Объяснение. Когда мы хотим найти разницу между двумя массивами, мы можем просто написать (массив1-массив2), чтобы получить разницу между массивами, но имейте в виду, что размеры обоих массивов должны быть одинаковыми. .

  • Мощность каждого элемента массива возведена в числоr n:

Пример:

# Power of each element of the array raise to 3
# Cube of each element
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val**(3))
# Power of each element of the array raise to 0.5
# Square root of each element
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val**(0.5))

Реализация:

Объяснение. Здесь мы возводим в степень 3 каждое значение массива и печатаем его. Когда мы хотим возвести в степень n каждое значение массива, мы просто пишем (имя_массива)* *n для возведения в степень каждого значения массива на значение n.

  • Изменить каждый элемент:

Пример:

# Multiply each element of the array by 3
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val*(3))
# Divide each element of the array by 3
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(val/3)

Реализация:

Объяснение. Здесь мы умножаем каждое значение массива на 3 и печатаем его. Точно так же, когда мы хотим разделить каждое значение массива, мы просто пишем (имя_массива)/n, чтобы разделить массив на значение n.

  • np.sort() — эта функция используется для сортировки массива и принимает ось аргументов, что позволяет сортировать массив по строкам и по столбцам при инициализации со значениями 1 и 0 соответственно.

Пример 1:

# Sort the array row-wise
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
print(np.sort(val,axis=1))

Реализация:

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

Пример 2:

# Sort the array column-wise
val = np.array([(3, 4, 2, 5),(3, 6, 2, 4),(1, 5, 2, 6)])
np.sort(val,axis=0)

Реализация:

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

Что делать дальше?

Библиотека NumPy в Python — одна из наиболее широко используемых библиотек для числовых вычислений. Мы подробно рассмотрели библиотеку NumPy с помощью различных примеров в этой статье. Мы также продемонстрировали, как использовать библиотеку NumPy для выполнения нескольких операций линейной алгебры. Я рекомендую вам попрактиковаться на примерах, представленных в этом посте. Если вы хотите работать специалистом по данным, библиотека NumPy — это один из инструментов, которые вам необходимо освоить, чтобы стать успешным и продуктивным сотрудником профессии. "Выучить больше".