#numpy #numpy-ndarray
Вопрос:
На выходе a = np.zeros((2,2,2,3),int)
получается
[[[[0 0 0]
[0 0 0]]
[[0 0 0]
[0 0 0]]]
[[[0 0 0]
[0 0 0]]
[[0 0 0]
[0 0 0]]]]
У меня есть список Y = [a,b], и я хочу добавить их, например, в новую строку, столбец и фигуру, чтобы новая фигура была (2,3,3,4)
Результат был бы таким:
[[[[0 0 0 a]
[0 0 0 a]
[a a a a]]
[[0 0 0 a]
[0 0 0 a]
[a a a a]]
[[a a a a]
[a a a a]
[a a a a]]]
[[[0 0 0 b]
[0 0 0 b]
[b b b b]
[[0 0 0 b]
[0 0 0 b]
[b b b b]
[[b b b b]
[b b b b]
[b b b b]]]
Уже почти 2 дня я пытаюсь решить эту проблему, но мне это не удалось.
Комментарии:
1. Обычно мы предпочитаем видеть некоторые из этих попыток, даже если они приводят к ошибкам или неправильным результатам. Нам нужно знать кое-что о том, что вы понимаете. Есть несколько способов сделать это.
concatenating
массивы-это одно, заполнение «пустого» массива-другое. Вы пробовали что-то более простое, например, добавление столбца в 2d-массив?2. Я попытался объединить, и я могу добавить новый столбец или строку, но не последнюю матрицу, которая включает тот же элемент, что и a или b. Я понял, что вы сделали, и я не думал, что это будет так просто с новой матрицей, как вы сделали с Y. Огромное спасибо
Ответ №1:
Создайте начальный массив и цель:
In [14]: a = np.ones((2,2,2,3),int)
In [15]: Y = np.zeros((2,3,3,4),int)
Заполнение задней площадки:
In [21]: Y[0,:,:,:]=2
In [22]: Y[1,:,:,:]=3
и тогда a
:
In [23]: Y[:,:2,:2,:3]=a
результат:
In [24]: Y
Out[24]:
array([[[[1, 1, 1, 2],
[1, 1, 1, 2],
[2, 2, 2, 2]],
[[1, 1, 1, 2],
[1, 1, 1, 2],
[2, 2, 2, 2]],
[[2, 2, 2, 2],
[2, 2, 2, 2],
[2, 2, 2, 2]]],
[[[1, 1, 1, 3],
[1, 1, 1, 3],
[3, 3, 3, 3]],
[[1, 1, 1, 3],
[1, 1, 1, 3],
[3, 3, 3, 3]],
[[3, 3, 3, 3],
[3, 3, 3, 3],
[3, 3, 3, 3]]]])