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

Numpy Hstack в Python Для различных массивов

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

Автор оригинала: Team Python Pool.

Numpy Hstack в Python Для различных массивов

Модуль numpy в python состоит из очень многих интересных функций. Одним из таких увлекательных и экономящих время методов является функция numpy hstack (). Много раз мы хотим сложить различные массивы в один массив, не теряя значения. И это тоже в одной строке кода. Итак, для решения этой проблемы в numpy vstack() и hstack () доступны две функции. Здесь “v” означает “Вертикальный”, а “h” – “Горизонтальный”.

В этой конкретной статье мы подробно обсудим функцию Numpy hstack(). Функция numpy.hstack() в Python используется для того, чтобы сложить последовательность входных массивов горизонтально (по столбцам) и сделать их единым массивом. Вы можете использовать hstack() очень эффективно вплоть до трехмерных массивов. Теперь достаточно разговоров; давайте перейдем непосредственно к использованию и примерам из основ.

Синтаксис

numpy.hstack(tup)

Параметры

Имя Описание
туп Последовательность ndarray. Коллекция входных массивов-это единственное, что вам нужно предоставить в качестве входных данных

Примечание

Нам нужен только один аргумент для этой функции: ‘tup.’ Tup известен как кортеж, содержащий массивы, которые должны быть сложены. Этот параметр является обязательным параметром, и мы должны обязательно передать значение.

Возвращаемое значение

Stacked Array: Массив (ndarray) , сформированный путем укладки переданных массивов.

Примеры для упрощения Numpy Hstack

Теперь мы увидели синтаксис, требуемые параметры и возвращаемое значение функции numpy stack. Давайте перейдем к разделу примеров. Здесь мы начнем с самого основного случая, а затем постепенно увеличим уровень примеров.

Пример 1: Базовый кейс для изучения работы Numpy Hstack

В этом примере 1 мы просто инициализируем, объявим два массива numpy, а затем создадим их горизонтальный стек с помощью функции stack.

import numpy as np.array([0, 1, 2])
print ("First Input array : \n", x)  .array([3, 4, 5])
print ("Second Input array : \n", y)  .hstack((x,y))
print ("Horizontally stacked array:\n ", res)

Выход:

First Input array :
 [0 1 2]
Second Input array :
 [3 4 5]
Horizontally stacked array:
 [0 1 2 3 4 5]

Объяснение:

В приведенном выше примере мы сложили два массива numpy горизонтально (по столбцам). Во-первых, мы импортировали модуль numpy. После импорта мы инициализировали, объявили и сохранили два массива numpy в переменных ‘x и y’. После этого с помощью функции np.hstack() мы сложили или сложили два 1-D массива numpy. Здесь обратите внимание,что стек будет выполнен горизонтально (столбчатый стек). Кроме того, оба массива должны иметь одинаковую форму вдоль всех осей, кроме первой.

Пример 2: Объединение Трех 1-D Массивов По Горизонтали С Помощью функции numpy.hstack

Давайте перейдем ко второму примеру, здесь мы возьмем три 1-D массива и объединим их в один href=”https://en.wikipedia.org/wiki/Array_data_structure”>массив. href=”https://en.wikipedia.org/wiki/Array_data_structure”>массив.

import numpy as np.array([0, 1])
print ("First Input array : \n", x)  .array([2, 3])
print ("Second Input array : \n", y)  .array([4, 5])
print ("Third Input array : \n", z)  .hstack((x, y, z))
print ("Horizontally stacked array:\n ", res)

Выход:

First Input array :
 [0 1]
Second Input array :
 [2 3]
Third Input array :
 [4 5]
Horizontally stacked array:
  [0 1 2 3 4 5]

Объяснение

В приведенном выше примере мы сделали все то же самое, что и в примере 1, за исключением добавления одного дополнительного массива. В примере 1 мы видим, что существует два массива. Но в этом примере мы использовали три массива “x, y, z”. И с помощью np.hstack() мы соединили их вместе по столбцам (горизонтально).

Пример 3: Объединение 2-D Массивов Numpy С Numpy.hstack

import numpy as np.array([[0, 1], [2, 3]])
print ("First Input array : \n", x)  .array([[4, 5], [6, 7]])
print ("Second Input array : \n", y) .hstack((x, y))
print ("Horizontally stacked array:\n ", res)

Выход:

First Input array :
 [[0 1]
 [2 3]]
Second Input array :
 [[4 5]
 [6 7]]
Horizontally stacked array:
 [[0 1 4 5]
 [2 3 6 7]]

Объяснение:

В приведенном выше примере мы инициализировали и объявили два 2-D массива. И мы сохранили их в двух переменных, ‘x,y’ соответственно. После хранения переменных в двух разных массивах мы использовали функцию, чтобы объединить два 2-D массива и сделать их одним 2-d массивом. Здесь нам нужно убедиться, что форма обоих входных массивов должна быть одинаковой. Если формы различны, то мы получим ошибку значения.

Пример 4: Укладка 3-D массива Numpy с помощью функции hstack

import numpy as np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print ("First Input array : \n", x)  .array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])
print ("Second Input array : \n", y) .hstack((x, y))
print ("Horizontally stacked array:\n ", res)

Выход:

First Input array : 
 [[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]
Second Input array : 
 [[[ 9 10]
  [11 12]]

 [[13 14]
  [15 16]]]
Horizontally stacked array:
  [[[ 1  2]
  [ 3  4]
  [ 9 10]
  [11 12]]

 [[ 5  6]
  [ 7  8]
  [13 14]
  [15 16]]]

Объяснение

Мы можем использовать эту функцию для укладки или объединения 3-D массива по горизонтали (по столбцам). Вместо 1-D массива или 2-D массива в приведенном выше примере мы объявили и инициализировали два 3-D массива. После инициализации мы сохранили их в двух переменных, ‘x и y’ соответственно. После части хранения мы использовали эту функцию для укладки 3-D массива горизонтально (по столбцам).

Примечание: Форма входных массивов должна быть одинаковой.

Можем ли Мы Комбинировать Массивы Numpy с различными формами с Помощью Hstack

Простой односложный ответ-Нет. Давайте докажем это на одном из примеров.

import numpy as np.array([0, 1])
print ("First Input array : \n", x)  .array([3, 4, 5])
print ("Second Input array : \n", y)  .hstack((x,y))
print ("Horizontally stacked array:\n ", res)

Выход:

ValueError: all the input array dimensions except for the concatenation axis must match exactly

Объяснение:

В приведенном выше случае мы получаем ошибку значения. Здесь, во-первых, мы импортировали необходимый модуль. После этого мы инициализировали два массива и сохранили их в двух разных переменных. Здесь следует отметить, что в переменной ” x ” массив имеет два элемента. Но в переменной ‘y’ массив имеет три элемента. Таким образом, мы видим, что форма обоих массивов не одинакова. Что является основным требованием при работе с этой функцией. Вот почему мы получаем ошибку значения.

Разница между Np.Hstack() и Np.Concatenate()

NumPy concatenate похож на более гибкую модель np.hstack. NumPy concatenate также объединяет массивы NumPy, но он может объединять массивы вместе либо вертикально, либо даже горизонтально. Таким образом, NumPy concatenate получает возможность объединять массивы вместе, как np.hstack плюс np.vstack. Как действует np.concatenate, зависит от того, как вы используете параметр axis из синтаксиса.

Разница между numpy hstack() и vstack()

NumPy hstack и NumPy vstack похожи друг на друга, потому что они оба объединяют массивы NumPy вместе. Существенное различие заключается в том, что np.hstack объединяет массивы NumPy по горизонтали, а np.vstack-по вертикали.

Однако, помимо этого, синтаксис и поведение очень похожи.

Должно ли количество столбцов и строк быть одинаковым?

Column: Нет, если вы используете NumPy hstack, входные массивы могут иметь разное количество столбцов.Rows: Если вы используете NumPy hstack, входные массивы должны содержать точно такое же количество строк.

Вывод

В этой статье мы подробно изучили различные аспекты, такие как синтаксис, функционирование и случаи этого hstack. Numpy.hstack () – это функция, которая помогает сложить входную последовательность горизонтально так, чтобы получился один сложенный массив. Это может быть полезно, когда мы хотим сложить различные массивы в один столбец (горизонтально). Мы можем использовать эту функцию вплоть до ndarrays, но рекомендуется использовать ее до 3-D массивов.

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

Счастливого Пифонирования!