numpy.append() в Python

Функция append() библиотеки Python numpy используется для объединения двух массивов. Эта функция возвращает новый массив, и оригинальный массив остается неизменным.

Синтаксис append() в NumPy

Синтаксис функции следующий:

numpy.append(arr, values, axis=None)
  • arr может быть объектом, похожим на массив, или массивом NumPy. Значения добавляются к копии этого массива.
  • Значения – это объекты, похожие на массив, и они добавляются в конец элементов “arr”.
  • Ось указывает ось, вдоль которой добавляются значения. Если ось не указана, оба массива выравниваются.

Примеры использования append() в Python numpy

Давайте рассмотрим несколько примеров использования функции append() в NumPy.

1. Выравнивание двух массивов

import numpy as np

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[10, 20], [30, 40]])

# ось не указана, элементы массива будут выравниваться
arr_flat = np.append(arr1, arr2)

print(arr_flat)  # [ 1  2  3  4 10 20 30 40]

2. Объединение по оси

import numpy as np

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=0)
print(f'Merged 2x2 Arrays along Axis-0:\n{arr_merged}')

arr_merged = np.append([[1, 2], [3, 4]], [[10, 20], [30, 40]], axis=1)
print(f'Merged 2x2 Arrays along Axis-1:\n{arr_merged}')

Вывод:

Merged 2x2 Arrays along Axis-0:
[[ 1  2]
 [ 3  4]
 [10 20]
 [30 40]]
Merged 2x2 Arrays along Axis-1:
[[ 1  2 10 20]
 [ 3  4 30 40]]
  • Когда 2×2 массивы объединяются по оси x, размер выходного массива составляет 4×2.
  • Когда 2×2 массивы объединяются по оси y, размер выходного массива составляет 2×4.

3. Объединение массивов разной формы

Функция append() вызывает ValueError, если массивы имеют разную форму, за исключением оси. Давайте разберемся с этим на простом примере.

arr3 = np.append([[1, 2]], [[1, 2, 3], [1, 2, 3]])
print(arr3)

arr3 = np.append([[1, 2]], [[1, 2], [3, 4]], axis=0)
print(arr3)
  • В первом примере элементы массива сглажены. Поэтому даже если их размеры полностью разные – 1×2 и 2×3, функция append() работает нормально.
  • Во втором примере формы массивов – 1×2 и 2×2. Поскольку мы добавляем по оси 0, форма оси 0 может быть разной. Остальные формы должны быть одинаковыми, поэтому и эта функция append() также будет работать нормально.

Вывод:

[1 2 1 2 3 1 2 3]

[[1 2]
 [1 2]
 [3 4]]

Рассмотрим еще один пример, при котором будет вызвано исключение ValueError.

>>> import numpy as np
>>> 
>>> arr3 = np.append([[1, 2]], [[1, 2, 3]], axis=0)
Traceback (most recent call last):
  File "", line 1, in 
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/numpy/lib/function_base.py", line 4528, in append
    return concatenate((arr, values), axis=axis)
ValueError: all the input array dimensions except for the concatenation axis must match exactly
>>> 
Python numpy append() ValueError

Формы массивов – 1×2 и 2×3. Поскольку формы оси-1 разные, возникает исключение ValueError. Ссылка: Документация API

Source:
https://www.digitalocean.com/community/tutorials/numpy-append-in-python