Docstring:
concatenate((a1, a2, ...), axis=0, out=None)
a1, a2, ... : sequence of array_like
The arrays must have the same shape, except in the dimension
corresponding to `axis` (the first, by default).
Это функция, а не метод. Он вызывается с np.concatenate
.
Первый аргумент - это кортеж (или, в более общем случае, последовательность) массивов (или массивов). Если вызывается с np.concatenate(a1, a2)
, a2
будет интерпретироваться как параметр axis
, который должен быть простым числом!
Не используйте np.concatenate
(или np.append
), как если бы оно былобыли клоном списка append
. alist.append(r)
является вызовом метода и действует на месте. Функции numpy
являются functions
и не действуют на месте. Они возвращают новый массив. При повторном использовании в цикле они гораздо менее эффективны.
Из вашего описания это звучит как простая проблема с пониманием списка:
In [14]: alist = [[1,2],[],[2,3],[],[],[4]]
In [15]: newlist = [i if len(i) else [0] for i in alist]
In [16]: newlist
Out[16]: [[1, 2], [0], [2, 3], [0], [0], [4]]
Или записано как цикл for:
In [20]: newlist = []
...: for i in alist:
...: if len(i)==0:
...: i = [0]
...: newlist.append(i)
Этот список можно превратить в массив с одним (правильным) np.concatenate
вызовом после:
In [22]: np.concatenate(newlist)
Out[22]: array([1, 2, 0, 2, 3, 0, 0, 4])