您需要扩展尺寸X
with None/np.newaxis http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#numpy.newaxis形成一个 3D 数组,然后进行减法w
。这将带来broadcasting http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html为此而投入3D
运算并产生形状为的输出(5,n,3)
。实施看起来像这样 -
X[:,None] - w # or X[:,np.newaxis] - w
相反,如果所需的顺序是(n,5,3)
,那么你需要扩展维度w
相反,就像这样——
X - w[:,None] # or X - w[:,np.newaxis]
样本运行 -
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)