3
我知道我可以做np.subtract.outer(x, x)
。如果x
已經形狀(n,)
,那麼我最終得到一個形狀爲的陣列。不過,我有一個形狀爲(n, 3)
的x
。我想輸出形狀爲(n, n, 3)
的東西。我該怎麼做呢?也許np.einsum
?如何計算numpy中的所有向量差異對?
我知道我可以做np.subtract.outer(x, x)
。如果x
已經形狀(n,)
,那麼我最終得到一個形狀爲的陣列。不過,我有一個形狀爲(n, 3)
的x
。我想輸出形狀爲(n, n, 3)
的東西。我該怎麼做呢?也許np.einsum
?如何計算numpy中的所有向量差異對?
您可以None
/np.newaxis
擴展方面,形成x
三維數組版本,並從中減去原來的二維數組的版本,像這樣使用後broadcasting
-
x[:, np.newaxis, :] - x
採樣運行 -
In [6]: x
Out[6]:
array([[6, 5, 3],
[4, 3, 5],
[0, 6, 7],
[8, 4, 1]])
In [7]: x[:,None,:] - x
Out[7]:
array([[[ 0, 0, 0],
[ 2, 2, -2],
[ 6, -1, -4],
[-2, 1, 2]],
[[-2, -2, 2],
[ 0, 0, 0],
[ 4, -3, -2],
[-4, -1, 4]],
[[-6, 1, 4],
[-4, 3, 2],
[ 0, 0, 0],
[-8, 2, 6]],
[[ 2, -1, -2],
[ 4, 1, -4],
[ 8, -2, -6],
[ 0, 0, 0]]])
嗯,這比我想象的要簡單得多:) –