np.array
скомпилировано, и что-то вроде черного ящика. Он работает предсказуемо для списков списков чисел, при условии, что он может создавать многомерный массив. Откат - это массив объектов типа d (массив списков) или, в некоторых случаях, ошибка ( Создание проблемы с массивом-пустышкой (невозможно преобразовать входной массив из shape (2) в shape (1)) ).
np.stack
- это функция покрытия для np.concatenate
. Это код Python.
Сначала он создает все входные массивы:
arrays = [asanyarray(arr) for arr in arrays]
asanyarray
- это просто вызов без копирования np.array
.
Затем он проверяетформы - все они должны быть одинаковыми
shapes = {arr.shape for arr in arrays}
, тогда он добавляет измерение к каждому (детали опущены)
expanded_arrays = [arr[sl] for arr in arrays]
и объединяет их:
concatenate(expanded_arrays, axis=axis, out=out)
Начиная со списка массивов, он выполняет примерно ту же работу, что и np.array
(временные параметры аналогичны для больших списков). Как отмечалось в другом ответе, он не даст рваный массив. Но где stack
действительно хорошо, это когда мы хотим использовать axis
. Без этого нам бы пришлось transpose
array
версия.