Программирование
Введение в 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 — это один из инструментов, которые вам необходимо освоить, чтобы стать успешным и продуктивным сотрудником профессии. "Выучить больше".