You need to extend the dimensions of X
with None/np.newaxis
to form a 3D array and then do subtraction by w
. This would bring in broadcasting
into play for this 3D
operation and result in an output with a shape of (5,n,3)
. The implementation would look like this -
X[:,None] - w # or X[:,np.newaxis] - w
Instead, if the desired ordering is (n,5,3)
, then you need to extend the dimensions of w
instead, like so -
X - w[:,None] # or X - w[:,np.newaxis]
Sample run -
In [39]: X
Out[39]:
array([[5, 5, 4],
[8, 1, 8],
[0, 1, 5],
[0, 3, 1],
[6, 2, 5]])
In [40]: w
Out[40]:
array([[8, 5, 1],
[7, 8, 6]])
In [41]: (X[:,None] - w).shape
Out[41]: (5, 2, 3)
In [42]: (X - w[:,None]).shape
Out[42]: (2, 5, 3)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…