как добавить 1d массив numpy в 2d массив numpy python

#python #numpy #append

Вопрос:

Я хотел бы добавить массив [3, 3, 3] в массив [[1, 1, 1], [2, 2, 2]], так что это становится [[1, 1, 1], [2, 2, 2], [3, 3, 3]]

Вот мой код:

 import numpy as np
arr1 = np.array([[1, 1, 1], 
                 [2, 2, 2]])

arr2 = np.append(arr1, [3, 3, 3])

print (arr2)
 

вместо печати [[1, 1, 1], [2, 2, 2], [3, 3, 3]] ,

он печатает [1, 1, 1, 2, 2, 2, 3, 3, 3] .

Я совсем новичок в numpy и не понимаю, почему 2d-массив внезапно становится 1d.

Комментарии:

1. Ты вернулся и прочитал np.append документы? Это объясняет сглаживание.

2. Да, здесь говорится, что вы должны использовать параметр `ось=0`’. Я попытался сделать это с помощью: arr2 = np.append(arr1, [3, 3, 3], axis=0) и это дает мне ошибку: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)

3. np.append это в основном альтернативный способ вызова np.concatenate , как показывает обратная связь с вашей ошибкой. Один массив имеет форму (2,3), другой (3,). 2-я должна быть (1,3) формы для объединения. vstack является альтернативным пользователем concatenate , который заботится об этой детали.

Ответ №1:

Вы можете использовать полезный numpy стандартный метод vstack .

Вот мой код.

Инициализировать 2-мерный массив numpy

 initial_array = np.array([
    [1, 1, 1], 
    [2, 2, 2]
])
 

определите массив для добавления в массив инициали

 new_array = np.array([3, 3, 3])
 

добавьте новый массив в исходный массив в виде строки

 result = np.vstack((initial_array, new_array))
 

это и есть результат

 print(result)
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
 

Более подробную информацию вы можете прочитать здесь.

Надеюсь, этот ответ будет полезен для вас. Спасибо.

Ответ №2:

 import numpy as np
arr1 = np.array([[1, 1, 1], 
                 [2, 2, 2]])

arr2 = np.append(arr1, [[3, 3, 3]], axis=0)

print (arr2)
 

Выход:

 [[1 1 1]                                                                                                                                                                                                        
 [2 2 2]                                                                                                                                                                                                        
 [3 3 3]] 
 

Ответ №3:

Воспользуйся numpy.vstack :

 arr2 = np.vstack((arr1, [3,3,3]))
>>> arr2
[[1 1 1]
 [2 2 2]
 [3 3 3]]