Посмотрите на его код:
arr = asanyarray(arr)
if axis is None:
if arr.ndim != 1:
arr = arr.ravel()
values = ravel(values)
axis = arr.ndim-1
return concatenate((arr, values), axis=axis)
Это простой интерфейс для concatenate
. С axis
это прямой вызов concatenate
. Без него это ravels
входов, что часто вызывает проблемы. И он конвертирует скаляры в массивы.
Если у вас есть 1d массив, то это простой способ добавить одно значение:
In [8]: np.append(np.arange(3), 10)
Out[8]: array([ 0, 1, 2, 10])
, но hstack
также хорош:
In [10]: np.hstack([np.arange(3), 10])
Out[10]: array([ 0, 1, 2, 10])
Люди пишут функции, которые в то время казались хорошей идеей, обычно с особым вниманием к применению c. Но фактическое использование (и неправильное использование) может отличаться от ожидаемого.
np.stack
- более новое и полезное дополнение.
Некоторое время в документации была заметка, призывающая нас использовать concatenate
и stack
и избегать всех остальных стеков, но это было ослаблено. Теперь они просто имеют:
Эта функция наиболее удобна для массивов с 3 измерениями. Например, для данных пикселей с высотой (первая ось), шириной (вторая ось) и каналами r / g / b (третья ось). Функции concatenate
, stack
и block
обеспечивают более общие операции суммирования и объединения.