如何在 numpy 中优雅地构造以下矩阵?
How to construct the following matrix elegantly in numpy?
假设我有一个 5 维矩阵 v
现在我想要一个新矩阵 D
满足
D[a, b, n, m, d] = v[a, b, n, n, d]-v[a, b, m, m, d].
如何在 numpy 中优雅地执行此操作?
您想如何改变维度?你可以像这样重塑它
import numpy as np
a, b, n, d = 2, 3, 4, 5
v = np.zeros((a, b, n, n, d))
D = v.reshape((a, b, n*n, d))
我发现 einsum
可以做到这一点:
D = np.einsum('abiic->abic', v)[..., None, :] - np.einsum('abiic->abic', v)[:, :, None, ...]
假设我有一个 5 维矩阵 v
现在我想要一个新矩阵 D
满足
D[a, b, n, m, d] = v[a, b, n, n, d]-v[a, b, m, m, d].
如何在 numpy 中优雅地执行此操作?
您想如何改变维度?你可以像这样重塑它
import numpy as np
a, b, n, d = 2, 3, 4, 5
v = np.zeros((a, b, n, n, d))
D = v.reshape((a, b, n*n, d))
我发现 einsum
可以做到这一点:
D = np.einsum('abiic->abic', v)[..., None, :] - np.einsum('abiic->abic', v)[:, :, None, ...]