Из прилагаемой документации:
Definition: append(arr, values, axis=None)
Docstring:
Append values to the end of an array.
Parameters
----------
arr : array_like
Values are appended to a copy of this array.
values : array_like
These values are appended to a copy of `arr`. It must be of the
correct shape (the same shape as `arr`, excluding `axis`). If `axis`
is not specified, `values` can be any shape and will be flattened
before use.
axis : int, optional
The axis along which `values` are appended. If `axis` is not given,
both `arr` and `values` are flattened before use.
Вот почему ваш пример (1) терпит неудачу в том, что, поскольку вы не указываете аргумент оси для первого добавления, x сглаживается, и, следовательно, второе добавление не выполняется, так как формы больше не совпадают.
Ваш второй пример не удался, потому что формы не совпадают. В начале x.shape = (1,0), то есть 1 строка и 0 столбцов. Затем вы пытаетесь добавить массив с формой (1,2) вдоль 0-й оси (то есть вы хотите, чтобы массив результатов имел больше строк, но такое же количество столбцов), что, конечно, не работает, так как число столбцов не совпадает.
Кстати, лично я почти никогда не использую append () при работе с numpy. Гораздо эффективнее выделить правильный размер заранее, а затем использовать нарезку для его заполнения, а не добавлять, что подразумевает перераспределение и копирование каждый раз.