Как добавить массив 2D np перед массивом 3D np? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть массив 3D numpy, и я хочу добавить перед ним массив 2D np из 0.

import numpy as np
A = np.zeros(3,3,3)
for i in np.arange(0,2):
    for j in np.arange(0,2):
        for k in np.arange(0,2):
            A[i,j,k] = 10
print(A)
#returns:
 [[[10. 10.  0.]
  [10. 10.  0.]
  [ 0.  0.  0.]]

 [[10. 10.  0.]
  [10. 10.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]
  [ 0.  0.  0.]]]

Я хочу добавить еще один массив B, чтобы:

B = np.zeros(3,3)
print(B)
#returns 
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

# add B to front of A 
# B + A = 
[[[0.  0.  0.]
  [0.  0.  0.]
  [0.  0.  0.]]

 [[10. 10.  0.]
  [10. 10.  0.]
  [ 0.  0.  0.]]

 [[10. 10.  0.]
  [10. 10.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]
  [ 0.  0.  0.]]]

Я пробовал np.append (B, A), но он возвращает 2D-массив.

1 Ответ

1 голос
/ 06 мая 2020

Вы можете сделать это, используя numpy.vstack и изменив форму вашего массива. Например:

import numpy as np

a = np.ones((3, 3, 3))
b = np.zeros((3, 3))
res = np.vstack((b.reshape(1, 3, 3), a))

Кстати, вы можете создать свой массив A более эффективно:

import numpy as np

A = np.zeros((3,3,3))
A[:2, :2, :2] = 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...