#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]]