Почему numpy append не добавляет элемент в массив?
array = np.array(train["text"][0])
for i in range(1, len(train["text"])):
np.append(array, train["text"][i], axis = 0)
Series train["text"] выглядит так(его часть):
0 [254, 5, 46, 1, 39, 1, 32, 1, 7, 4, 5, 1, 13, ...
1 [254, 32, 85, 30, 1, 1, 85, 43, 2, 12, 144, 27...
2 [112, 14, 20, 254, 88, 124, 254, 10, 39, 112, ...
3 [111, 5, 14, 85, 55, 5, 4, 9, 5, 85, 3, 27, 14...
4 [111, 16, 144, 58, 17, 10, 18, 39, 3, 8, 1, 23...
...
289 [55, 10, 79, 4, 14, 2, 4, 1, 1, 3, 2, 40, 1, 2...
290 [25, 68, 50, 43, 191, 111, 191, 50, 43, 124, 2...
291 [55, 8, 29, 13, 32, 85, 1, 27, 3, 13, 29, 4, 2...
292 [36, 7, 254, 40, 30, 37, 85, 6, 1, 7, 1, 86, 72]
293 [30, 51, 124, 55, 30, 51, 39, 47, 10, 2, 30, 5...
Name: text, Length: 294, dtype: object
После цикла я получаю тот же массив, что и задал в начале в переменной array:
[254 5 46 1 39 1 32 1 7 4 5 1 13 2 124 1 2 5
254 5 39 3 1 1 29 2 32 1 40 1 12 3 39 3 5 112
88 124 30 4 14 17 1 44 86 4]
Ответы (2 шт):
Потому, что в документации написано:
Returns : ndarray A copy of arr with values appended to
axis. Note that append does not occur in-place: a new array is allocated and filled. If axis is None, out is a flattened array.
В вашем случае нужно писать
array = np.append(array, train["text"][i], axis = 0)
Но есть вариант быстрее. Если вам нужно склеить все массивы в один длинный, воспользуйтесь np.concatenate. Если нужно сделать двумерный массив из набора одномерных, то np.vstack (но в этом случае все массивы должны быть одной длины)
По идее вам вообще цикл не нужен, при условии, что длина всех списков в колонке одинаковая, учитесь работать со всем датафреймом сразу, это гораздо быстрее, чем итерироваться по строкам:
array = np.vstack(train['text'])