У меня есть ndarray, A
, и я хочу, чтобы умножить этот элемент ndarray накрест другой массив 1D b
где я предполагаю, что A.shape[i] = len(b)
для некоторых i
. Мне нужна эта общность в моем приложении.np.tile повторить 1D массив
я могу сделать это с помощью np.tile
следующим образом:
A = np.random.rand(2,3,5,9)
b = np.random.rand(5)
i = 2
b_shape = np.ones(len(A.shape), dtype=np.int)
b_shape[i] = len(b)
b_reps = list(A.shape)
b_reps[i] = 1
B = np.tile(b.reshape(b_shape), b_reps)
# Here B.shape = A.shape and
# B[i,j,:,k] = b for all i,j,k
Это меня поражает, как некрасиво. Есть лучший способ сделать это?
Probbaly 'A * B [:, None]' , Для получения дополнительной информации читайте «Вещание NumPy». – Divakar