In [74]: A = np.arange(1,10).reshape(3,3); v = np.arange(1,4)
In [75]: A
Out[75]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
In [77]: v
Out[77]: array([1, 2, 3])
Разверните A
до (3,3,3):
In [78]: A[None,:,:].repeat(3,0)
Out[78]:
array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]])
Сделайте то же самое с v
:
In [79]: np.eye(3)
Out[79]:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
In [80]: np.eye(3)[:,:,None]*v
Out[80]:
array([[[1., 2., 3.],
[0., 0., 0.],
[0., 0., 0.]],
[[0., 0., 0.],
[1., 2., 3.],
[0., 0., 0.]],
[[0., 0., 0.],
[0., 0., 0.],
[1., 2., 3.]]])
, добавьте два:
In [81]: _78+_80
Out[81]:
array([[[ 2., 4., 6.],
[ 4., 5., 6.],
[ 7., 8., 9.]],
[[ 1., 2., 3.],
[ 5., 7., 9.],
[ 7., 8., 9.]],
[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 8., 10., 12.]]])
или за один шаг:
A+np.eye(3)[:,:,None]*v