Использование np.expand_dims
для поэлементного произведения с np.eye
a = np.array([[1, 2],
[3, 4],
[5, 6]])
N = a.shape[1]
a = np.expand_dims(a, axis=1)
a*np.eye(N)
array([[[1., 0.],
[0., 2.]],
[[3., 0.],
[0., 4.]],
[[5., 0.],
[0., 6.]]])
Пояснение
np.expand_dims(a, axis=1)
добавляетновая ось в a
, которая теперь будет (3, 1, 2)
ndarray:
array([[[1, 2]],
[[3, 4]],
[[5, 6]]])
Теперь вы можете умножить этот массив на размерную матрицу N
, которую вы можете сгенерировать с помощью np.eye
:
np.eye(N)
array([[1., 0.],
[0., 1.]])
, что даст желаемый результат:
a*np.eye(N)
array([[[1., 0.],
[0., 2.]],
[[3., 0.],
[0., 4.]],
[[5., 0.],
[0., 6.]]])