вертикальное объединение массивов NumPy

Вертикальное объединение массивов с помощью np.vstack() в NumPy

Вертикальное объединение массивов — это еще одна распространенная задача при работе с данными в NumPy. Функция np.vstack() предоставляет элегантный и простой метод для этой цели. Давайте рассмотрим её подробнее.

Синтаксис

numpy.vstack(tup)
  • tup: кортеж из массивов, которые вы хотите вертикально объединить.

Примеры использования

Объединение одномерных массивов:
Два одномерных массива будут объединены как две строки в результирующем двумерном массиве.

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result = np.vstack((arr1, arr2))
print(result)
# [[1 2 3]
#  [4 5 6]]

Объединение двумерных массивов:

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6]])
result = np.vstack((arr1, arr2))
print(result)
# [[1 2]
#  [3 4]
#  [5 6]]

Особенности функции np.vstack()

  • Для успешного объединения массивов они должны иметь одинаковую длину по горизонтали (одинаковое количество столбцов).
  • Если вам нужно объединить массивы горизонтально, используйте функцию np.hstack().
  • Для объединения массивов с указанием оси можно использовать функцию np.concatenate().

Практические примеры

Использование вертикального объединения для добавления строк к данным.
Предположим, у вас есть массив данных, и вы хотите добавить к нему дополнительные строки:

data = np.array([[1, 2, 3], [4, 5, 6]])
new_rows = np.array([[7, 8, 9], [10, 11, 12]])
augmented_data = np.vstack((data, new_rows))
print(augmented_data)
# [[ 1  2  3]
#  [ 4  5  6]
#  [ 7  8  9]
#  [10 11 12]]

Объединение одномерного и двумерного массивов.
При объединении одномерного массива с двумерным, одномерный массив интерпретируется как строка:

arr1 = np.array([1, 2, 3])
arr2 = np.array([[4, 5, 6], [7, 8, 9]])
result = np.vstack((arr1, arr2))
print(result)
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

Обработка ошибок при использовании np.vstack()

Во время работы с np.vstack() можно столкнуться с ошибками, особенно если массивы имеют разные размерности или формы. Например:

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8]])
try:
    result = np.vstack((arr1, arr2))
    print(result)
except ValueError as e:
    print(f"Ошибка: {e}")
# Ошибка: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 3 and the array at index 1 has size 2

Здесь мы использовали блок try-except, чтобы перехватить и показать возникающую ошибку. Если вы столкнетесь с подобной проблемой, убедитесь, что ваши массивы имеют подходящую форму для вертикального соединения.

Совет

Если вы работаете с большим количеством массивов и хотите соединить их все сразу, можно использовать распаковку списка:

arrays = [np.array([i, i+1, i+2]) for i in range(0, 10, 3)]
result = np.vstack(arrays)
print(result)

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

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

Заключение

Функция np.vstack() - это мощный инструмент для вертикального объединения массивов в NumPy. Она предоставляет простой способ структурирования данных, позволяя легко добавлять новые строки к вашему массиву. Эта функция является основой при манипуляциях с данными, особенно когда требуется объединять разные источники информации в одном массиве.

Содержание: