English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Соединение массивов NumPy

Обычные функции для подключения массивов:

ФункцияОписание
concatenateСоединение последовательности массивов по существующему оси
stackДобавление ряда массивов по новому оси.
hstackМассивы,堆积在水平序列中 (направление столбца)
vstackМассивы,堆积在垂直序列中 (направление строки)
dstackСтекание по высоте, высота которого совпадает с глубиной

Соединение массивов по оси (numpy.concatenate)

Соединение означает放置 содержимого двух или более массивов в один массив.
В SQL мы соединяем таблицы по ключу, а в NumPy мы соединяем массивы по оси.

Функция numpy.concatenate используется для соединения двух или нескольких массивов по заданной оси, формат如下:

numpy.concatenate((a1, a2, ...), axis)

Описание параметров:

a1, a2, ...: массивы одного типаaxis: ось, по которой соединяются массивы, по умолчанию 0

import numpy as np
a = np.array([[1,2,3,4,5],[3,4,5,6,7]])
print('Первый массив:')
print(a)
print('\n')
b = np.array([[5,6,7,8,9],[7,8,9,10,11]])
print('Второй массив:')
print(b)
print('\n')
 # Дименсии двух массивов одинаковы
print ('Соединение двух массивов по оси 0:')
print (np.concatenate((a,b)))
print('\n')
print ('Соединение двух массивов по оси 1:')
print (np.concatenate((a,b),axis = 1))

Результат вывода:

[[ 5 6 7 8 9]
[ 7 8 9 10 11]
Соединение двух массивов по оси 0:
[[ 1 2 3 4 5]
[ 3 4 5 6 7]
[ 5 6 7 8 9]
[ 7 8 9 10 11]
Соединение двух массивов по оси 1:
[[ 1 2 3 4 5 5 6 7 8 9]
[ 3 4 5 6 7 7 8 9 10 11]

Соединение массивов с помощью функции стека (numpy.stack)

Функция numpy.stack используется для соединения последовательности массивов по новому оси, формат如下:

numpy.stack(arrays, axis)

Описание параметров:

sequence of arrays with the same shapeaxis: возвращает ось в массиве, по которой выполняется stacking

import numpy as np
a = np.array([[1,2,3,4,5],[3,4,5,6,7]])
print('Первый массив:')
print(a)
print('\n')
b = np.array([[5,6,7,8,9],[7,8,9,10,11]])
print('Второй массив:')
print(b)
print('\n')
print ('Стекание двух массивов по оси 0:')
print (np.stack((a,b),0))
print('\n')
print ('Стекание двух массивов по оси 1:')
print (np.stack((a,b),1))

Результат вывода следующим образом:

Первый массив:
[[1 2 3 4 5]
[3 4 5 6 7]
Второй массив:
[[ 5 6 7 8 9]
[ 7 8 9 10 11]
Стекание двух массивов по оси 0:
[[[ 1 2 3 4 5]
[ 3 4 5 6 7]]
[[ 5 6 7 8 9]
[ 7 8 9 10 11]]]
Стекание двух массивов по оси 1:
[[[ 1 2 3 4 5]
[ 5 6 7 8 9]
[ 3 4 5 6 7]
[ 7 8 9 10 11]]]

Стекание массивов по строкам (numpy.hstack)

numpy.hstack является вариацией функции numpy.stack, которая создает массивы, используя горизонтальное堆积.

import numpy as np
a = np.array([[1,2,3,4,5],[3,4,5,6,7]])
print('Первый массив:')
print(a)
print('\n')
b = np.array([[5,6,7,8,9],[7,8,9,10,11]])
print('Второй массив:')
print(b)
print('\n')
print ('Горизонтальное堆积:')
c = np.hstack((a,b))
print(c)
print('\n')

Результат вывода следующим образом:

Первый массив:
[[1 2 3 4 5]
 [3 4 5 6 7]
Второй массив:
[[ 5 6 7 8 9]
 [ 7 8 9 10 11]
Горизонтальное堆积:
[[ 1 2 3 4 5 5 6 7 8 9]
 [ 3 4 5 6 7 7 8 9 10 11]

Стекание массивов по столбцам (numpy.vstack)

numpy.vstack является вариацией функции numpy.stack, которая создает массивы, используя вертикальное堆积.

import numpy as np
a = np.array([[1,2,3,4,5],[3,4,5,6,7]])
print('Первый массив:')
print(a)
print('\n')
b = np.array([[5,6,7,8,9],[7,8,9,10,11]])
print('Второй массив:')
print(b)
print('\n')
print('Вертикальный стек:')
c = np.vstack((a, b))
print(c)

Результат вывода:

Первый массив:
[[1 2 3 4 5]
 [3 4 5 6 7]
Второй массив:
[[ 5 6 7 8 9]
 [ 7 8 9 10 11]
Вертикальный стек:
[[ 1 2 3 4 5]
 [ 3 4 5 6 7]
 [ 5 6 7 8 9]
 [ 7 8 9 10 11]

Стек по высоте (numpy.dstack)

NumPy предоставляет вспомогательную функцию: dstack() для стека по высоте, которая имеет одинаковую глубину.

import numpy as np
a = np.array([[1,2,3,4,5],[3,4,5,6,7]])
b = np.array([[5,6,7,8,9],[7,8,9,10,11]])
arr = np.dstack((a, b))
print(arr)

Результат вывода:

[[[ 1 5]
  [ 2 6]
  [ 3 7]
  [ 4 8]
  [ 5 9]]
 [[ 3 7]
  [ 4 8]
  [ 5 9]
  [ 6 10]
  [ 7 11]]]