Функция NumPy stack() в Python: примеры и отличие от concatenate()
Функция NumPy stack() объединяет два или более массивов в один массив в Python.
- Что такое функция NumPy stack() в Python?
- Примеры с функцией NumPy stack()
- 1) Использование функции stack() для объединения одномерных массивов
- 2) Объединение двумерных массивов
- Сравнение методов NumPy stack() и concatenate()
Что такое функция NumPy stack() в Python?
В отличие от функции concatenate(), функция stack() объединяет одномерные массивы в один двумерный массив и двумерные массивы в один трехмерный массив.
Ниже показан синтаксис функции stack():
numpy.stack((a1,a2,...),axis=0)
В этом синтаксисе (a1, a2, …) — это последовательность массивов с типом ndarray или объектами, подобными массивам. Все массивы a1, a2, .. должны иметь одинаковую форму.
Параметр axis указывает ось в результирующем массиве, вдоль которой функция складывает входные массивы. По умолчанию ось равна нулю, что объединяет входные массивы по вертикали.
Помимо функции stack(), NumPy также имеет функцию vstack(), которая объединяет два или более массивов по вертикали, и функцию hstack(), которая объединяет два или более массивов по горизонтали.
Примеры с функцией NumPy stack()
Давайте рассмотрим несколько примеров использования функции stack().
1) Использование функции stack() для объединения одномерных массивов
В следующем примере функция stack() используется для объединения двух одномерных массивов:
import numpy as np a = np.array([1, 2]) b = np.array([3, 4]) c = np.stack((a, b)) print(c)
Выход:
[[1 2] [3 4]]
В следующем примере функция stack() используется для объединения двух одномерных массивов по горизонтали с использованием оси 1:
import numpy as np a = np.array([1, 2]) b = np.array([3, 4]) c = np.stack((a, b), axis=1) print(c)
Выход:
[[1 3] [2 4]]
2) Объединение двумерных массивов
В следующем примере функция stack() используется для объединения элементов двух 2D-массивов. Результатом является 3D-массив:
import numpy as np a = np.array([ [1, 2], [3, 4] ]) b = np.array([ [5, 6], [7, 8] ]) c = np.stack((a, b)) print(c) print(c.shape)
Выход:
[[[1 2] [3 4]] [[5 6] [7 8]]] (2, 2, 2)
Сравнение методов NumPy stack() и concatenate()
Следующий пример иллюстрирует разницу между функциями stack() и concatenate():
a = np.array([1,2]) b = np.array([3,4]) c = np.concatenate((a,b)) # return 1-D array d = np.stack((a,b)) # return 2-D array print(c) print(d)
Выход:
[1 2 3 4] [[1 2] [3 4]]
В этом примере функция concatenate() объединяет элементы двух массивов вдоль существующей оси, а функция stack() объединяет два массива вдоль новой оси.