Рубрики
Без рубрики

Ultimate Guide к Numpy Package для научных вычислений в Python

Автор оригинала: Nick McCullum.

Numpy (произносится «озвученный пирог») является одним из наиболее важных пакетов, чтобы понять, когда вы начинаете Учите питон Отказ

Пакет известен для очень полезной структуры данных, называемой Numpy Array. Numpy также позволяет разработчикам Python быстро выполнять широкий спектр численных вычислений.

Этот учебник научит вам основы Numpy, который вы можете использовать для создания численных приложений Python сегодня.

Оглавление

Вы можете перейти к определенному разделу этого Numpy Tutorial, используя таблицу содержимого ниже:

  • Введение в Numpy
  • Numpy массивы
  • Numpy Методы и операции
  • Numpy Inforering и назначение
  • Окончательные мысли и специальное предложение

Введение в Numpy

В этом разделе мы представим Numpy Library в питоне.

Что такое Numpy?

Numpy – библиотека Python для научных вычислений. Numpy Stand для численного Python. Вот официальное описание библиотеки из Его сайт :

«Numpy – это фундаментальный пакет для научных вычислений с Python. Он содержит среди прочего:

  • мощный n-мерный объект массива
  • Сложные (вещательные) функции
  • Инструменты для интеграции C/C ++ и код Fortran
  • Полезная линейная алгебра, преобразование Фурье и возможности случайных чисел

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

Numpy лицензирован под BSD лицензия Включение повторного использования с несколькими ограничениями. “

Numpy – это такая важная библиотека Python, что есть другие библиотеки (включая панды), которые полностью построены на Numpy.

Основное преимущество Numpy

Основным преимуществом NUMPY является то, что он обеспечивает чрезвычайно быструю генерацию данных и обработку. Numpy имеет собственную встроенную структуру данных, называемую массив что похоже на нормальный Python Список , но может хранить и работать на данных гораздо более эффективно.

Что мы узнаем о numpy

Усовершенствованные практикующие Python потратит гораздо больше времени работы с пандами, чем они проводят работу с Numpy. Тем не менее, учитывая, что Pandas построен на Numpy, важно понимать самые важные аспекты Numpy Library.

В течение следующих нескольких разделов мы осмотрим следующую информацию о Numpy Bibly:

  • Numpy массивы
  • Numpy Inforering и назначение
  • Numpy Методы и операции

Двигаться дальше

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

Numpy массивы

В этом разделе мы узнаем о Numpy массивы Отказ

Что такое Numpy массивы?

Numpy Armays – это основной способ хранения данных с использованием Numpy Bibly. Они похожи на нормальные списки в Python, но имеют преимущество быстрее и иметь более встроенные методы.

Обмочненные массивы создаются, вызывая Массив () Метод из Numpy Library. В способе вы должны пройти в списке.

Примером базового Numpy Array показан ниже. Обратите внимание, что пока я запускаю Импорт Numpy как NP Заявление в начале этого блока кода, он будет исключен из других блоков кода в этом разделе для ради краткости.

import numpy as np

sample_list = [1, 2, 3]

np.array(sample_list)

Последняя строка этого блока кода приведет к выводу, который выглядит так.

array([1,2,3])

Массив () Обелочка указывает, что это больше не является обычным списком Python. Вместо этого это простое массив.

Два разных типа Numpy массивов

Существует два разных типа Numpy массивов: векторы и матрицы.

Векторы являются одномерными примечательными массивами, и выглядеть так:

my_vector = np.array(['this', 'is', 'a', 'vector'])

Матрицы являются двумерными массивами и создаются путем передачи списка списков в np.array () метод. Пример ниже.

my_matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]

np.array(my_matrix)

Вы также можете расширить Numpy Race, чтобы иметь дело с тремя, четырьмя, пятью, шестью или более высокими мерными массивами, но они редки и в значительной степени за пределами объема этого курса (в конце концов, это курс по программированию Python, не линейная алгебра).

Numpy массивы: встроенные методы

Numpy Armays поставляется с несколькими полезными встроенными методами. Мы проведем остаток этого раздела, обсуждая эти методы подробно.

Как получить ряд номеров в Python, используя Numpy

Numpy имеет полезный метод под названием arange Это принимает в два числа и дает вам массив целых чисел, которые больше или равны ( > = ) первое число и меньше, чем ( < ) второе число.

Пример arange Метод ниже.

np.arange(0,5)

#Returns array([0, 1, 2, 3, 4])

Вы также можете включить третью переменную в arange Метод, который обеспечивает размер шага для возврата функции. Прохождение в 2 Поскольку третья переменная вернет каждое 2-е место в диапазоне, прохождение в 5 Поскольку третья переменная вернет каждое 5-е число в диапазоне, и так далее.

Пример использования третьей переменной в arange Метод ниже.

np.arange(1,11,2)

#Returns array([1, 3, 5, 7, 9])

Как генерирует и нули в Python, используя Numpy

Во время программирования вы время от времени надо создавать массивы или нули. Numpy имеет встроенные методы, которые позволяют вам сделать любой из них.

Мы можем создавать массивы нулей, используя numpy’s Zeros метод. Вы проходите в количестве целых чисел, которые вы хотели бы создать как аргумент функции. Пример ниже.

np.zeros(4)

#Returns array([0, 0, 0, 0])

Вы также можете сделать что-то подобное использование трехмерных массивов. Например, np.zeros (5, 5) Создает матрицу 5×5, которая содержит все нули.

Мы можем создавать массивы из них, используя аналогичный метод с именем теми Отказ Пример ниже.

np.ones(5)

#Returns array([1, 1, 1, 1, 1])

Как равномерно разделить ряд номеров в Python, используя Numpy

Существует множество ситуаций, в которых у вас есть ряд номеров, и вы хотели бы одинаково разделить этот диапазон чисел в интервалы. Numpy’s Linspace Метод предназначен для решения этой проблемы. Linspace принимает три аргумента:

  1. Начало интервала
  2. Конец интервала
  3. Количество субинтервартов, которые вы хотели бы, чтобы интервал был разделен на

Пример Linspace Метод ниже.

np.linspace(0, 1, 10)

#Returns array([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])

Как создать матрицу личности в Python, используя numpy

Любой, кто изучал линейную алгебру, будет знаком с концепцией «матрицы идентичности», которая является квадратной матрицей, диагональные значения которых все 1 Отказ NUMPY имеет встроенный функцию, которая принимает в одном аргументе для построения матриц личности. Функция – глаз Отказ

Примеры ниже:

np.eye(1)

#Returns a 1x1 identity matrix

np.eye(2) 

#Returns a 2x2 identity matrix

np.eye(50)

#Returns a 50x50 identity matrix

Как создавать случайные номера в Python, используя numpy

NUMPY имеет ряд методов, встроенных, которые позволяют создавать массивы случайных чисел. Каждый из этих методов начинается с Случайные Отказ Несколько примеров ниже:

np.random.rand(sample_size)

#Returns a sample of random numbers between 0 and 1.

#Sample size can either be one integer (for a one-dimensional array) or two integers separated by commas (for a two-dimensional array).

np.random.randn(sample_size)

#Returns a sample of random numbers between 0 and 1, following the normal distribution.

#Sample size can either be one integer (for a one-dimensional array) or two integers separated by commas (for a two-dimensional array).

np.random.randint(low, high, sample_size)

#Returns a sample of integers that are greater than or equal to 'low' and less than 'high'

Как изменить numpy массивы

Очень часто принять массив определенными размерами и преобразовывать этот массив в другую форму. Например, у вас может быть одномерный массив с 10 элементами и хотите переключить его на двумерную массив 2×5.

Пример ниже:

arr = np.array([0,1,2,3,4,5])

arr.reshape(2,3)

Выход этой операции:

array([[0, 1, 2],

       [3, 4, 5]])

Обратите внимание, что для использования Reshape Метод, исходный массив должен иметь одинаковое количество элементов, что и массив, который вы пытаетесь его изменить.

Если вам интересно текущую форму Numpy Array, вы можете определить его форму, используя Numpy’s Форма атрибут. Используя наши предыдущие arr Переменная структура, пример того, как позвонить Форма атрибут ниже:

arr = np.array([0,1,2,3,4,5])

arr.shape

#Returns (6,) - note that there is no second element since it is a one-dimensional array

arr = arr.reshape(2,3)

arr.shape

#Returns (2,3)

Вы также можете комбинировать Reshape Метод с Форма Атрибут на одной строке, как это:

arr.reshape(2,3).shape

#Returns (2,3)

Как найти максимальное и минимальное значение Numpy Array

Чтобы завершить этот раздел, давайте узнаем около четырех полезных методов для определения максимальных и минимальных значений в Numpy Array. Мы будем работать с этим массивом:

simple_array = [1, 2, 3, 4]

Мы можем использовать Макс Способ найти максимальное значение Numpy Array. Пример ниже.

simple_array.max()

#Returns 4

Мы также можем использовать argmax Способ найти индекс максимального значения в Numpy Array. Это полезно для того, чтобы когда вы хотите найти местоположение максимального значения, но вы не обязательно позаботитеете о том, что является его значением.

Пример ниже.

simple_array.argmax()

#Returns 3

Точно так же мы можем использовать мин и Аргмин Методы Чтобы найти значение и индекс минимального значения в Numpy Array.

simple_array.min()

#Returns 1

simple_array.argmin()

#Returns 0

Двигаться дальше

В этом разделе мы обсудили различные атрибуты и методы numpy массивов. Мы рассмотрим, работая через несколько проблем практики массива Numpy в следующем разделе.

Numpy Методы и операции

В этом разделе мы будем работать через Различные операции включены в Numpy Library.

На протяжении всего этого раздела мы предполагаем, что Импорт Numpy как NP Команда уже запущена.

Массив, используемый в этом разделе

Для этого раздела я буду работать с массивом длиной 4, созданный с использованием NP.Arge во всех примерах.

Если вы хотите сравнить свой массив с выходами, используемыми в этом разделе, вот как я создал и напечатал массив:

arr = np.arange(4)

arr

Значения массива ниже.

array([0, 1, 2, 3])

Как выполнить арифметику в Python, используя номер

Numpy делает его очень легко выполнять арифметику с массивами. Вы можете выполнить арифметику, используя массив и одно число, или вы можете выполнить арифметику между двумя примечательными массивами.

Мы исследуем каждую из основных математических операций ниже.

Добавление

При добавлении одного числа к Numpy Array это число добавляется в каждый элемент в массиве. Пример ниже:

2 + arr

#Returns array([2, 3, 4, 5])

Вы можете добавить два тазобедренных массивов, используя + оператор. Массивы добавляют на элемент-элементную основу (то есть первые элементы добавляются вместе, вторые элементы добавляются вместе и так далее).

Пример ниже.

arr + arr

#Returns array([0, 2, 4, 6])

Вычитание

Как и добавление, вычитание выполняется на элемент-элементной основе для применения. Вы можете найти пример как для одного номера, так и для другого Numpy Array ниже.

arr - 10

#Returns array([-10,  -9,  -8,  -7])

arr - arr

#Returns array([0, 0, 0, 0])

Умножение

Умновидение также выполняется на элемент-элементной основе для единых чисел, так и для Ompy массивов.

Два примера ниже.

6 * arr

#Returns array([ 0,  6, 12, 18])

arr * arr

#Returns array([0, 1, 4, 9])

Разделение

К этому моменту вы, вероятно, не удивляетесь, чтобы узнать, что разделение, выполненное на OUMPY-массивам, выполняется на элемент-элементной основе. Пример разделения arr по одному номеру ниже:

arr / 2

#Returns array([0. , 0.5, 1. , 1.5])

Отдел имеет одно осведоможенное исключение по сравнению с другими математическими операциями, которые мы видели в этом разделе. Поскольку мы не можем разделить на ноль, это приведет к заполнению соответствующего поля Нан Значение, которое является Python Shothand для «не числа». Jupyter Notebook также напечатает предупреждение, которое выглядит так:

RuntimeWarning: invalid value encountered in true_divide

Примером разделения на ноль с помощью Numpy Array показан ниже.

arr / arr

#Returns array([nan,  1.,  1.,  1.])

Мы узнаем, как иметь дело с Нан Значения более подробно позже в этом курсе.

Комплексные операции в примененных массивах

Многие операции не могут быть просто выполнены, применяя обычный синтаксис на номерного массива. В этом разделе мы рассмотрим несколько математических операций, которые имеют встроенные методы в Numpy Library.

Как рассчитать квадратные корни, используя numpy

Вы можете рассчитать квадратный корень каждого элемента в массиве, используя NP.SQRT Метод:

np.sqrt(arr)

#Returns array([0., 1., 1.41421356, 1.73205081])

Многие другие примеры ниже (обратите внимание, что вы не будете тестировать на них, но все еще полезно видеть возможности Numpy):

np.exp(arr)

#Returns e^element for every element in the array

np.sin(arr)

#Calculate the trigonometric sine of every value in the array

np.cos(arr)

#Calculate the trigonometric cosine of every value in the array

np.log(arr)

#Calculate the base-ten logarithm of every value in the array

Двигаться дальше

В этом разделе мы исследовали различные методы и операции, доступные в Numpy Python Библиотеку. Мы отправим ваше знание этих концепций в практике проблем, представленные ниже.

Numpy Inforering и назначение

В этом разделе мы рассмотрим Индексирование и назначение в Numpy массивов.

Массив я буду использовать в этом разделе

Как и прежде, я буду использовать конкретный массив через этот раздел. На этот раз он будет сгенерирован с использованием np.random.rand метод. Вот как я создал массив:

arr = np.random.rand(5)

Вот настоящий массив:

array([0.69292946, 0.9365295 , 0.65682359, 0.72770856, 0.83268616])

Чтобы облегчить этот массив легче посмотреть, я оборудоваю каждый элемент массива до 2 десятичных знаков, используя numpy’s раунд Метод:

arr = np.round(arr, 2)

Вот новый массив:

array([0.69, 0.94, 0.66, 0.73, 0.83])

Как вернуть определенный элемент из Numpy Array

Мы можем выбрать (и возвращать) определенный элемент из простого массива того же способа, который мы могли бы использовать обычный список Python: используя квадратные скобки.

Пример ниже:

arr[0]

#Returns 0.69

Мы также можем ссылаться на несколько элементов Numpy Array с помощью оператора толстой кишки. Например, индекс [2:] Выбирает каждый элемент из индекса 2 внутрь. Индекс [: 3] Выбирает каждый элемент до и исключая индекс 3. Индекс [2: 4] Возвращает каждый элемент из индекса 2 на индекс 4, исключая индекс 4. Большая конечная точка всегда исключается.

Несколько пример индексации с использованием оператора толстой кишки находятся ниже.

arr[:]

#Returns the entire array: array([0.69, 0.94, 0.66, 0.73, 0.83])

arr[1:]

#Returns array([0.94, 0.66, 0.73, 0.83])

arr[1:4] 

#Returns array([0.94, 0.66, 0.73])

Присвоение элемента в Numpy Armays

Мы можем назначить новые значения элементу Numpy Array, используя = Оператор, как правильные списки Python. Несколько примеров ниже (обратите внимание, что это весь один код код, что означает, что назначения элементов переносятся с шага к шагу).

array([0.12, 0.94, 0.66, 0.73, 0.83])

arr

#Returns array([0.12, 0.94, 0.66, 0.73, 0.83])

arr[:] = 0

arr

#Returns array([0., 0., 0., 0., 0.])

arr[2:5] = 0.5

arr

#Returns array([0. , 0. , 0.5, 0.5, 0.5])


Массив ссылается в Numpy

Numpy использует концепцию под названием «Array ссылается», который является очень распространенным источником путаницы для людей, которые являются новыми в библиотеку.

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

new_array = np.array([6, 7, 8, 9])

second_new_array = new_array[0:2]

second_new_array

#Returns array([6, 7])

second_new_array[1] = 4

second_new_array 

#Returns array([6, 4]), as expected

new_array 

#Returns array([6, 4, 8, 9]) 

#which is DIFFERENT from its original value of array([6, 7, 8, 9])

#What the heck?

Как видите, модифицируя second_new_array также изменил значение new_array Отказ

Почему это?

По умолчанию Numpy не создает копию массива при ссылке оригинальной переменной массива с помощью = Оператор назначения. Вместо этого он просто указывает на новую переменную к старой переменной, которая позволяет второй переменную сделать модификацию оригинальной переменной – даже если это не ваше намерение.

Это может показаться странным, но у него есть логическое объяснение. Цель ссылки на массив состоит в том, чтобы сохранить вычислительную мощность. При работе с большим набором данных вы быстро выберете RAM, если вы создали новый массив каждый раз, когда вы хотите работать с ломтиком массива.

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

Пример этого ниже.

array_to_copy = np.array([1, 2, 3])

copied_array = array_to_copy.copy()

array_to_copy

#Returns array([1, 2, 3])

copied_array

#Returns array([1, 2, 3])

Как вы можете видеть ниже, изготовление модификаций скопированного массива не изменяет оригинал.

copied_array[0] = 9

copied_array

#Returns array([9, 2, 3])

array_to_copy

#Returns array([1, 2, 3])

До сих пор в разделе мы исследовали только, как ссылаться на одномерные одноместные массивы. Теперь мы исследуем индексацию двумерных массивов.

Индексирование двумерных Numpy массивов

Для начала, давайте создадим двумерный бассейн Numpy с именем Мат :

mat = np.array([[5, 10, 15],[20, 25, 30],[35, 40, 45]])

mat

"""

Returns:

array([[ 5, 10, 15],

       [20, 25, 30],

       [35, 40, 45]])

"""

Существует два способа индексирования двумерного Numpy Array:

  • Матем [ROW, COL]
  • Матем [ряд] [Col]

Я лично предпочитаю индексировать, используя Матем [ряд] [Col] Номенклатура, потому что легче визуализировать в пошаговой моде. Например:

#First, let's get the first row:

mat[0]

#Next, let's get the last element of the first row:

mat[0][-1]

Вы также можете генерировать суб-матрицы из двумерного массива Numpy, используя эту запись:

mat[1:][:2]

"""

Returns:

array([[20, 25, 30],

       [35, 40, 45]])

"""

Ссылка на массив также относится к двумерным массивам в Numpy, поэтому обязательно используйте Скопировать Метод Если вы хотите избежать непреднамеренного изменения оригинального массива после сохранения ломтика в новое имя переменной.

Условный выбор, используя numpy массивы

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

Пример этого ниже (я также повторно создал наш оригинал Arr Переменная с момента его некоторого времени, поскольку мы его видели):

arr = np.array([0.69, 0.94, 0.66, 0.73, 0.83])

arr > 0.7

#Returns array([False,  True, False,  True,  True])

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

Пример этого ниже:

arr[arr > 0.7]

#Returns array([0.94, 0.73, 0.83])

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

Двигаться дальше

В этом разделе мы исследовали индексирование и назначение Numpy Array в тщательной детализации. Мы будем укреплять свои знания об этих концепциях, работая через партию проблем практики в следующем разделе.

Окончательные мысли и специальное предложение

Спасибо, что ознакомились с этой статьей на Numpy, которая является одним из моих любимых пакетов Python и библиотека должна знать каждый разработчик Python.

Этот учебник – выдержка из моего курса Python для финансов и науки о данных Отказ Если вы заинтересованы в изучении более основных навыков Python, курс скидка на 50% для первых 50 читателей FreeCodecamp, которые зарегистрируются – Нажмите здесь, чтобы получить дисконтированный курс сейчас !