Узнайте, как складывать массивы NumPy в первой части этой серии из двух частей.

Numpy — одна из самых важных библиотек для науки о данных, а также она предоставляет большинство функций, необходимых для работы с данными. Таким образом, требуется освоение всех тонкостей этой библиотеки. Это часть 1 из 2, и в этой статье мы увидим, как складывать массивы numpy. Это позволяет вам присоединиться к 2 массивам numpy на указанной оси.

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



Что такое numpy.stack?

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

Параметры np.stack:

  • массивы (обязательно) — Массивы, которые мы хотим сложить, должны быть одинаковой формы.
  • ось (необязательно) — ось, вдоль которой мы хотим сложить массивы.
  • out (необязательно) — Целевой массив, в котором мы хотим, чтобы наш результат был. Он должен иметь ту же форму, что и выходной массив.

Укладка по строкам против столбцов

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

Давайте лучше разберемся в этом на нескольких примерах.

>>> import numpy as np
>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6])

# First we will stack on top of each other, which is the default behavior
>>> np.stack([a,b])
array([[1, 2, 3],
       [4, 5, 6]])

# Now we will use axis=0, which should also give us the same output as above.
# Even if we want to use default behavior, it is always better 
# to mention the value we want to use.
>>> np.stack([a,b], axis=0)
array([[1, 2, 3],
       [4, 5, 6]])

# Now we will use axis=1, which will stack them side-by-side.
>>> np.stack([a,b], axis=1)
array([[1, 4],
       [2, 5],
       [3, 6]])

Приведенные выше примеры относятся к массивам в 1D, давайте также посмотрим пару примеров для 2D.

>>> a = np.array([[1,2,3], [4,5,6]])
>>> b = np.array([[7,8,9],[10,11,12]])

# Stacking 2D arrays on top of each other.
>>> np.stack([a,b], axis = 0)
array([[[ 1,  2,  3],
        [ 4,  5,  6]],
       [[ 7,  8,  9],
        [10, 11, 12]]])

# Stacking 2D arrays side-by-side.
>>> np.stack([a,b], axis = 1)
array([[[ 1,  2,  3],
        [ 7,  8,  9]],
       [[ 4,  5,  6],
        [10, 11, 12]]])

Numpy hstack и vstack

Функция numpy hstack берет 2 массива с одинаковым количеством строк и соединяет их по горизонтали. Количество столбцов в этих массивах не обязательно должно быть одинаковым, они могут быть разными, и они будут складываться без каких-либо проблем.

>>> a = np.array([[1,1], [1,1]])
>>> b = np.array([[2,2,2,2], [2,2,2,2]])
>>> np.hstack([a,b])
array([[1, 1, 2, 2, 2, 2],
       [1, 1, 2, 2, 2, 2]])

Здесь hstack взял массив b и соединил его по горизонтали с массивом a.

Функция numpy vstack берет 2 массива с одинаковым количеством столбцов и соединяет их по вертикали. Как и в случае с hstack, здесь количество строк может быть разным, и он также будет складываться.

>>> a = np.array([[1,1,1], [1,1,1]])
>>> b = np.array([[2,2,2], [2,2,2], [2,2,2], [2,2,2]])
>>> np.vstack([a,b])
array([[1, 1, 1],
       [1, 1, 1],
       [2, 2, 2],
       [2, 2, 2],
       [2, 2, 2],
       [2, 2, 2]])

Здесь vstack взял массив b и сложил его вертикально с массивом.

Обе функции интуитивно понятны из названия. hstack соединяется горизонтально или бок о бок, тогда как vstack соединяется с массивом вертикально или друг над другом.

Это все для этой части, и в следующей части я объясню, как эффективно разбивать массивы numpy.

Спасибо за прочтение! Если вам это понравилось, используйте кнопку хлопка, и если у вас есть какие-либо предложения, оставьте комментарий. Обязательно подпишитесь, чтобы прочитать предстоящие статьи о NumPy, Pandas, SQL и обо всем, что связано с наукой о данных.

Свяжитесь со мной: LinkedIn

Ознакомьтесь с другими моими проектами: Github

Следите за мной на Средних